This module contains a collection of YANG definitions for QoS objects Copyright (c) 2015-2019 by Dell EMC, All rights reserved.
Version: 2018-12-27
module dell-base-qos { yang-version 1; namespace "http://www.dellemc.com/networking/os10/dell-base-qos"; prefix base-qos; import dell-base-common { prefix base-cmn; } import ietf-yang-types { prefix yang; } import ietf-inet-types { prefix inet; } import ietf-interfaces { prefix if; } organization "Dell EMC"; contact "http://www.dell.com/support"; description "This module contains a collection of YANG definitions for QoS objects Copyright (c) 2015-2019 by Dell EMC, All rights reserved."; revision "2018-12-27" { description "Modified stats key from port id to ifname."; reference "Network Platform Abstraction"; } revision "2018-10-28" { description "Support for Priority Flow Control (PFC) deadlock detection. PFC deadlock occurrence in a network is inferred through detection of PFC 'storms' at individual devices - namely detection of a large number of PFC frames received in a short 'detection' time interval. As a result of PFC deadlock detection, the system ignores the received PFC pause frames and takes one of two actions: DROP all incoming traffic for a certain 'recovery' time interval or FORWARD all traffic during this recovery time interval"; reference "Network Platform Abstraction"; } revision "2018-09-05" { description "Buffer statistics tracking enables taking snapshot of queue/priroity group/pool buffer counters at same time in switch. This will help to provide overall view of switch buffer utlization. Adding option to get snapshot buffer counters."; reference "Network Platform Abstraction"; } revision "2018-08-27" { description "Modified stats key from port id to ifname."; reference "Network Platform Abstraction"; } revision "2018-06-15" { description "Fixing IETF error for enum value type."; reference "Network Platform Abstraction"; } revision "2018-01-30" { description "Add ECN color-blind threshold; Allow separate handling of ECT and non-ECT traffic"; reference "Network Platform Abstraction"; } revision "2017-12-01" { description "Add range to Meter, WRED-profile, Scheduler-profile, Map, Buffer Pool and Buffer Profile Id."; reference "Network Platform Abstraction"; } revision "2016-03-31" { description "Add Buffer Management."; reference "Network Platform Abstraction"; } revision "2015-02-03" { description "Initial revision."; reference "Network Platform Abstraction"; } typedef meter-type { type enumeration { enum "PACKET" { value 1; } enum "BYTE" { value 2; } } description "Enumeration of all types of meter-units"; } typedef policer-action { type enumeration { enum "FORWARD" { value 1; } enum "DROP" { value 2; } } description "Enumeration of all types of actions that the policer performs on a matched packet"; } typedef queue-type { type enumeration { enum "NONE" { value 1; description "hardware queue for both unicast and multicast traffic"; } enum "UCAST" { value 2; description "hardware unicast queue"; } enum "MULTICAST" { value 3; description "hardware multicast queue"; } } description "Types of hardware traffic-queues"; } typedef scheduling-type { type enumeration { enum "SP" { value 1; description "Strict Priority"; } enum "WRR" { value 2; description "Weighted Round-Robin"; } enum "WDRR" { value 3; description "Weighted Deficit RR"; } } description "Types of packet scheduling policies"; } typedef packet-color { type enumeration { enum "GREEN" { value 1; description "Green"; } enum "YELLOW" { value 2; description "Yellow"; } enum "RED" { value 3; description "Red"; } } description "Enumeration of packet color types based on RFC 2697"; } typedef meter-mode { type enumeration { enum "Sr_TCM" { value 1; description "Single Rate Tri Color Meter"; } enum "Tr_TCM" { value 2; description "Two Rate Tri Color Meter"; } enum "Sr_TWO_COLOR" { value 3; description "Single Rate Two Color Meter [Committed Rate, Committed Burst, green-packet-action and red-packet-action are used]"; } enum "STORM_CONTROL" { value 4; description "Storm Control Meter [Single Rate Two Color mode]"; } } description "Enumeration of various type of meters-modes"; } typedef meter-color-source { type enumeration { enum "BLIND" { value 1; } enum "AWARE" { value 2; } } description "Enumeration of type of color awareness. Color-blind mode is equivalent to color-aware mode with all incoming packets colored as green. "; } typedef flow-control { type enumeration { enum "DISABLE" { value 1; } enum "TX-ONLY" { value 2; } enum "RX-ONLY" { value 3; } enum "BOTH-ENABLE" { value 4; } } description "Types of flow-control state"; } typedef policer-stat-type { type enumeration { enum "PACKETS" { value 1; } enum "BYTES" { value 2; } enum "GREEN_PACKETS" { value 3; } enum "GREEN_BYTES" { value 4; } enum "YELLOW_PACKETS" { value 5; } enum "YELLOW_BYTES" { value 6; } enum "RED_PACKETS" { value 7; } enum "RED_BYTES" { value 8; } } description "Types of statisctics that policer maintains"; } typedef buffer-pool-type { type enumeration { enum "INGRESS" { value 1; } enum "EGRESS" { value 2; } } description "Types of buffer-pools"; } typedef buffer-threshold-mode { type enumeration { enum "STATIC" { value 1; } enum "DYNAMIC" { value 2; } } description "Denotes whether the buffer-threshold is fixed or dynamic"; } typedef ecn-mark-mode { type enumeration { enum "NONE" { value 0; } enum "GREEN" { value 1; } enum "YELLOW" { value 2; } enum "RED" { value 3; } enum "GREEN-YELLOW" { value 4; } enum "GREEN-RED" { value 5; } enum "YELLOW-RED" { value 6; } enum "ALL" { value 7; } } description "Types of ECN marking methods"; } list meter { key "id"; description "This defines a QoS Ingress Meter."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this Meter belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..500"; } description "Ingress Meter Id"; } leaf type { type meter-type; mandatory true; description "meter based on packets or bytes"; } leaf mode { type meter-mode; mandatory true; description "Single-Rate/Two-Rate Two-Color/Tri-Color Meter"; } leaf color-source { type meter-color-source; description "Policer color aware or color blind"; } leaf green-packet-action { type policer-action; description "Green packet action"; } leaf yellow-packet-action { type policer-action; description "Yellow packet action"; } leaf red-packet-action { type policer-action; description "Red packet action"; } leaf committed-burst { type uint64; description "Burst size in byte"; } leaf committed-rate { type uint64; description "Committed Rate in byte-per-second or packets"; } leaf peak-burst { type uint64; description "Peak burst size in byte"; } leaf peak-rate { type uint64; description "Peak rate in byte-per-second or packets. Only valid for Two Rate Tri Color Meter"; } leaf-list stat-list { type policer-stat-type; description "various policer statistics to be collected"; } leaf packets { type yang:counter64; config false; description "total packet count"; } leaf bytes { type yang:counter64; config false; description "total byte count"; } leaf green-packets { type yang:counter64; config false; description "green packet count"; } leaf green-bytes { type yang:counter64; config false; description "green byte count"; } leaf yellow-packets { type yang:counter64; config false; description "yellow packet count"; } leaf yellow-bytes { type yang:counter64; config false; description "yellow byte count"; } leaf red-packets { type yang:counter64; config false; description "red packet count"; } leaf red-bytes { type yang:counter64; config false; description "red byte count"; } leaf data { type base-cmn:qos-meter-opaque-data; config false; description "Internal hardware specific Meter data blob."; } leaf-list npu-id-list { type base-cmn:npu-id; description "Optional subset of NPUs on which this Meter needs to be created. If this attribute is not specified then the Meter is installed on all NPUs in the Logical switch to which the Meter belongs."; } } // list meter list wred-profile { key "id"; description "This defines the WRED profile. The wred profile can be attached to a port, queue or buffer. Storm control also uses this profile"; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this Profile belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..500"; } description "WRED profile id"; } leaf green-enable { type boolean; default 'false'; description "Enable/Disable WRED."; } leaf green-min-threshold { type uint32; description "Minimum threshold in bytes after which packets will be dropped based on the drop probability"; } leaf green-max-threshold { type uint32; description "Maximum threshold in bytes after which packets will be tail dropped"; } leaf green-drop-probability { type uint32 { range "0..100"; } default '100'; description "Percentage probability with which packets will be dropped when minimum threshold is reached"; } leaf yellow-enable { type boolean; default 'false'; description "Enable/Disable WRED."; } leaf yellow-min-threshold { type uint32; description "Minimum threshold in bytes after which packets will be dropped based on the drop probability"; } leaf yellow-max-threshold { type uint32; description "Maximum threshold in bytes after which packets will be tail dropped"; } leaf yellow-drop-probability { type uint32 { range "0..100"; } default '100'; description "Percentage probability with which packets will be dropped when minimum threshold is reached"; } leaf red-enable { type boolean; default 'false'; description "Enable/Disable WRED."; } leaf red-min-threshold { type uint32; description "Minimum threshold in bytes after which packets will be dropped based on the drop probability"; } leaf red-max-threshold { type uint32; description "Maximum threshold in bytes after which packets will be tail dropped"; } leaf red-drop-probability { type uint32 { range "0..100"; } default '100'; description "Percentage probability with which packets will be dropped when minimum threshold is reached"; } leaf weight { type uint32 { range "0..15"; } default '0'; description "The average queue size depends on the previous average as well as the current size of the queue. The Weight indicates the importance of previous average queue length compared to the current queue size. The higher value of the Weight, the more important the previous average queue length. Peak and low in queue length will be smoothed by a high value. Low values of Weight allow the average queue size to stay close to the current queue size."; } leaf ecn-enable { type boolean; default 'false'; status deprecated; description "Flag to indicate if ECN generation is enabled on congestion"; } leaf ecn-mark { type ecn-mark-mode; description "Flag to indicate what type of packets will be ECN-marked during congestion. When Global ECN ECT flag is disabled, both ECT and non-ECT traffic are subject to WRED thresholds. When Global ECN ECT is enabled, non-ECT traffic will be subject to WRED thresholds, while ECT traffic is subject to ECN-thresholds."; } container ecn-green { description "Separate threshold for ECT-traffic"; uses thresholds; } // container ecn-green container ecn-yellow { description "Separate threshold for ECT-traffic"; uses thresholds; } // container ecn-yellow container ecn-red { description "Separate threshold for ECT-traffic"; uses thresholds; } // container ecn-red container ecn-color-unaware { description "Separate threshold for ECT-traffic"; uses thresholds; } // container ecn-color-unaware leaf-list npu-id-list { type base-cmn:npu-id; description "Optional subset of NPUs on which this Profile needs to be created. If this attribute is not specified then the Profile is created on all NPUs in the Logical switch to which the Profile belongs."; } } // list wred-profile list queue { key "port-id queue-number type"; description "This defines attributes of a QoS queue. QoS queues are initialized by SAI automatically. User can reprogram other queue attributes."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this queue id belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf port-id { type base-cmn:logical-ifindex; mandatory true; description "Physical port to which this queue belongs."; } leaf type { type queue-type; mandatory true; description "Queue type"; } leaf queue-number { type uint32; mandatory true; description "locally unique id within a port and a specific queue type"; } leaf id { type base-cmn:base-obj-id-type; config false; description "unique queue id across the whole switch assigned to the queue"; } leaf parent { type base-cmn:base-obj-id-type; mandatory true; description "parent scheduler group node in case of Hierarchical QoS support"; } leaf wred-id { type base-cmn:base-obj-id-type; description "WRED profile id"; } leaf buffer-profile-id { type base-cmn:base-obj-id-type; description "buffer profile id"; } leaf scheduler-profile-id { type base-cmn:base-obj-id-type; description "Scheduler profile Id associated to this queue"; } leaf data { type base-cmn:qos-queue-opaque-data; config false; description "Internal hardware specific Queue data blob."; } leaf-list mmu-index-list { type uint32; config false; description "In multi-MMU (Memory Management Unit) system, 1-based indexes of the MMUs where the queue is present."; } leaf pfc-ddr-enable { type boolean; default 'false'; description "Enable the PFC deadlock detection-recovery on a QOS queue"; } leaf pfc-deadlock-status { type boolean; default 'false'; config false; description "PFC deadlock status of a QOS queue as detected by Hardware"; } } // list queue list queue-stat { key "ifname type queue-number mmu-index snapshot"; description "This defines QoS queue counter statistics."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this queue id belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf port-id { type base-cmn:logical-ifindex; status obsolete; description "Physical port to which this queue belongs."; } leaf ifname { type if:interface-ref; description "Physical port to which this queue belongs."; } leaf type { type queue-type; description "Queue type"; } leaf queue-number { type uint32; description "locally unique id within a port and a specific queue type"; } leaf mmu-index { type uint32; default '0'; description "In multi-MMU system, if non-zero MMU-index is provided, statistics on the specific MMU will be reported."; } leaf snapshot { type boolean; default 'false'; description "Get queue buffer statistics from snapshot."; } leaf packets { type yang:counter64; description "tx packets count"; } leaf bytes { type yang:counter64; description "tx bytes count"; } leaf dropped-packets { type yang:counter64; description "dropped packets count"; } leaf dropped-bytes { type yang:counter64; description "dropped bytes count"; } leaf green-packets { type yang:counter64; description "green color tx packets count"; } leaf green-bytes { type yang:counter64; description "green color tx bytes count"; } leaf green-dropped-packets { type yang:counter64; description "green color dropped packets count"; } leaf green-dropped-bytes { type yang:counter64; description "green color dropped bytes count"; } leaf yellow-packets { type yang:counter64; description "yellow color tx packets count"; } leaf yellow-bytes { type yang:counter64; description "yellow color tx bytes count"; } leaf yellow-dropped-packets { type yang:counter64; description "yellow color dropped packets count"; } leaf yellow-dropped-bytes { type yang:counter64; description "yellow color dropped bytes count"; } leaf red-packets { type yang:counter64; description "red color tx packets count"; } leaf red-bytes { type yang:counter64; description "red color tx bytes count"; } leaf red-dropped-packets { type yang:counter64; description "red color dropped packets count"; } leaf red-dropped-bytes { type yang:counter64; description "red color dropped bytes count"; } uses wred-stat; uses wred-ecn-stat; uses buffer-stat; } // list queue-stat list scheduler-profile { key "id"; description "This defines attributes of a QoS scheduler profile. QoS scheduler profile can be attached to a queue or a queue group."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this scheduler profile id belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..2000"; } description "Scheduler profile Id"; } leaf algorithm { type scheduling-type; default 'WDRR'; description "Strict Priority or DWRR scheduling algorithm"; } leaf weight { type uint32; description "Scheduling weight"; } leaf meter-type { type meter-type; description "meter type: packets or bytes"; } leaf min-rate { type uint64; description "Guaranteed bandwidth shape rate [bytes/sec or PPS]"; } leaf min-burst { type uint64; description "Guaranteed burst for bandwidth shape rate [Bytes or Packets]"; } leaf max-rate { type uint64; description "Maximum bandwidth shape rate [bytes/sec or PPS]"; } leaf max-burst { type uint64; description "Maximum burst for bandwidth shape rate [Bytes or Packets]"; } leaf-list npu-id-list { type base-cmn:npu-id; description "Optional subset of NPUs on which this Profile needs to be created. If this attribute is not specified then the Profile is created on all NPUs in the Logical switch to which the Profile belongs."; } leaf name { type string { length "32"; } description "Optional user-provided name for the scheduler profile"; } } // list scheduler-profile list scheduler-group { key "id"; description "This defines attributes of a QoS scheduler group. QoS scheduler group consists of a number of queues or child scheduler groups. When a scheduler-group is created, port-id and level must be specified at creation."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this scheduler group id belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type; description "Scheduler group Id"; } leaf child_count { type uint32; config false; description "Number of queues/child groups added to the scheduler group."; } leaf-list child-list { type base-cmn:base-obj-id-type; config false; description "Child scheduler group id list or queue id list added to this scheduler group"; } leaf port-id { type base-cmn:logical-ifindex; mandatory true; description "port id to which the scheduler group belongs"; } leaf level { type uint32; mandatory true; description "scheduler group level. Level 0 scheduler group is the Port-level scheduler group; Level (MAX_NUMBER_OF_SCHEDULER_GROUP_HIERACHY_LEVELS - 1) scheduler group consists of Queue ids in the child-list. Other values beyond this range are invalid."; } leaf max-child { type uint32; mandatory true; description "Maximum number of child on group"; } leaf scheduler-profile-id { type base-cmn:base-obj-id-type; mandatory true; description "scheduler profile id associated to this scheduler group"; } leaf parent { type base-cmn:base-obj-id-type; mandatory true; description "Scheduler group parent node. If the level is 0, the parent-node is the port."; } } // list scheduler-group list dot1p-to-tc-map { key "id"; description "This defines a map which maps the incoming dot1p values to traffic-classes. A valid dot1p-to-tc-map id can then be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "dot1p"; description "Key-value pair, where each 'dot1p' value corresponds to a 'tc' value"; leaf dot1p { type base-cmn:dot1p; description "incoming dot1p value"; } leaf tc { type base-cmn:traffic-class; description "Traffic class that given dot1p is mapped to"; } } // list entry } // list dot1p-to-tc-map list dscp-to-tc-map { key "id"; description "This defines a map which maps the incoming dscp values to traffic-classes. A valid dscp-to-tc-map id can then be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "dscp"; description "Key-value Pair, where each 'dscp' value corresponds to a 'tc' value"; leaf dscp { type inet:dscp; description "incoming dscp value"; } leaf tc { type base-cmn:traffic-class; description "Traffic class that given dscp is mapped to"; } } // list entry } // list dscp-to-tc-map list dot1p-to-color-map { key "id"; description "This defines a map which marks a packet with a different color by its incoming dot1p value. A valid dot1p-to-color-map id can then be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "dot1p"; description ""; leaf dot1p { type base-cmn:dot1p; description "incoming dot1p value"; } leaf color { type packet-color; description "Packet color that given dot1p is mapped to"; } } // list entry } // list dot1p-to-color-map list dot1p-to-tc-color-map { key "id"; status deprecated; description "This defines a map which maps the incoming dot1p values to traffic-classes and marks a packet with a different color by its incoming dot1p value. A valid dot1p-to-tc-color-map id can then be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "dot1p"; description "Key-value pair, where each 'dot1p' value corresponds to a 'tc, color' value-pair"; leaf dot1p { type base-cmn:dot1p; description "incoming dot1p value"; } leaf tc { type base-cmn:traffic-class; description "Traffic class that given dot1p is mapped to"; } leaf color { type packet-color; description "Packet color that given dot1p is mapped to"; } } // list entry } // list dot1p-to-tc-color-map list dscp-to-color-map { key "id"; description "This defines a map which marks a packet with a different color by its incoming dscp value. A valid dscp-to-color-map id can then be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "dscp"; description "Key-value pair, where each 'dscp' value corresponds to a 'color' value"; leaf dscp { type inet:dscp; description "incoming dscp value"; } leaf color { type packet-color; description "Packet color that given dscp is mapped to"; } } // list entry } // list dscp-to-color-map list dscp-to-tc-color-map { key "id"; status deprecated; description "This defines a map which maps the incoming dscp values to traffic-classes and marks a packet with a different color by its incoming dscp value. A valid dscp-to-tc-color-map id can then be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "dscp"; description "Key-value pair, where each 'dscp' value corresponds to a 'tc, color' value-pair"; leaf dscp { type inet:dscp; description "incoming dscp value"; } leaf tc { type base-cmn:traffic-class; description "Traffic class that given dscp is mapped to"; } leaf color { type packet-color; description "Packet color that given dscp is mapped to"; } } // list entry } // list dscp-to-tc-color-map list tc-to-queue-map { key "id"; description "This defines a map which maps the packet traffic class to a queue id. A valid tc-to-queue-map id can then be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } list entry { key "tc type"; description "Key-value pair, where each 'tc, type' value-pair corresponds to a 'queue-number' value"; leaf tc { type base-cmn:traffic-class; description "Traffic class"; } leaf type { type queue-type; description "Queue type"; } leaf queue-number { type uint32; description "local queue id within a port and a queue type. "; } } // list entry } // list tc-to-queue-map list tc-to-dot1p-map { key "id"; status deprecated; description "This defines a map which maps the traffic class to egress dot1p values. A valid tc-to-dot1p-map id can be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "tc"; description "Key-value pair, where each 'tc' value corresponds to a 'dot1p' value"; leaf tc { type base-cmn:traffic-class; description "Traffic class"; } leaf dot1p { type base-cmn:dot1p; description "egress dot1p value for this traffic class"; } } // list entry } // list tc-to-dot1p-map list tc-to-dscp-map { key "id"; status deprecated; description "This defines a map which maps the traffic class to egress dscp values. A valid tc-to-dscp-map id can be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "tc"; description "Key-value pair, where each 'tc' value corresponds to a 'dscp' value"; leaf tc { type base-cmn:traffic-class; description "Traffic class"; } leaf dscp { type inet:dscp; description "egress dscp value for this traffic class"; } } // list entry } // list tc-to-dscp-map list tc-color-to-dot1p-map { key "id"; description "This defines a map which maps the traffic class and color to egress dot1p values. A valid tc-color-to-dot1p-map id can be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "tc color"; description "Key-value pair, where each 'tc, color' value corresponds to a 'dot1p' value"; leaf tc { type base-cmn:traffic-class; description "Traffic class"; } leaf color { type packet-color; description "Packet color"; } leaf dot1p { type base-cmn:dot1p; description "egress dot1p value for this traffic class and color"; } } // list entry } // list tc-color-to-dot1p-map list tc-color-to-dscp-map { key "id"; description "This defines a map which maps the traffic class and color to egress dscp values. A valid tc-color-to-dscp-map id can be applied to a port."; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "tc color"; description "Key-value pair, where each 'tc, color' value corresponds to a 'dscp' value"; leaf tc { type base-cmn:traffic-class; description "Traffic class"; } leaf color { type packet-color; description "Packet color"; } leaf dscp { type inet:dscp; description "egress dscp value for this traffic class and color"; } } // list entry } // list tc-color-to-dscp-map list tc-to-priority-group-map { key "id"; description "This map defines how a traffic class is mapped to a priority group, which defines how to enforce flow control on an ingress packet"; leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "tc"; description "Key-value pair, where each 'tc' value corresponds to a 'priority-group' value"; leaf tc { type base-cmn:traffic-class; description "Traffic class"; } leaf priority-group { type uint8; description "local Priority group id"; } } // list entry } // list tc-to-priority-group-map list priority-group-to-pfc-priority-map { key "id"; description "This map defines how a priority group is mapped to one or multiple pfc-priorities"; leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "priority-group pfc-priority"; description "A value pair associating a 'priority-group' with one or more 'pfc-priority'"; leaf priority-group { type uint8; description "local Priority group id"; } leaf pfc-priority { type base-cmn:dot1p; description "PFC priority for outgoing PAUSE frame"; } } // list entry } // list priority-group-to-pfc-priority-map list pfc-priority-to-queue-map { key "id"; description "This map defines how PFC priority from a received PAUSE frame is mapped to an egress queue. When applied on a port, it tells which egress queue should honor a peer node's PFC request."; leaf id { type base-cmn:base-obj-id-type { range "1..127"; } description "Map identifier."; } leaf name { type string { length "32"; } description "Optional user-provided name for the map"; } list entry { key "pfc-priority type"; description "Key-value pair, where each 'pfc-priority, type' value-pair corresponds to a 'queue-number' value"; leaf pfc-priority { type base-cmn:dot1p; description "PFC priority from the incoming PAUSE frame"; } leaf type { type queue-type; description "Queue type"; } leaf queue-number { type uint32; description "local queue id within a port and a queue type. "; } } // list entry } // list pfc-priority-to-queue-map list buffer-pool { key "id mmu-index"; description "buffer pool"; leaf id { type base-cmn:base-obj-id-type { range "1..32"; } description "buffer pool id"; } leaf mmu-index { type uint32; default '0'; description "To create or configure buffer pool, MMU-index must be 0. No individual MMU configuration will be accepted. Non-zero MMU-index can be used in a multi-MMU system to retrieve the buffer-pool state on a specific MMU."; } leaf shared-size { type uint32; config false; description "This is the available buffer size in bytes that can be shared. This is derived from substracting all reserved buffers."; } leaf pool-type { type buffer-pool-type; mandatory true; description "buffer pool type: Ingress or Egress buffer pool"; } leaf size { type uint32; mandatory true; description "the total size of this buffer pool in bytes"; } leaf threshold-mode { type buffer-threshold-mode; description "Shared threshold mode for the buffer pool. STATIC means the threshold is defined in bytes; DYNAMIC means the threshold is defined in relative size of the shared buffer."; } leaf xoff-size { type uint32; description "Shared headroom pool size in bytes for lossless traffic."; } leaf wred-profile-id { type base-cmn:base-obj-id-type; description "WRED profile associated with the pool. WRED Drop/ECN marking based on pool threshold will happen only when at least one of the queues refers to this buffer pool and the queue is configured to enable WRED."; } } // list buffer-pool list buffer-pool-stat { key "id mmu-index snapshot"; description "This defines QoS buffer pool statistics."; leaf id { type base-cmn:base-obj-id-type; description "buffer pool id"; } leaf mmu-index { type uint32; default '0'; description "In multi-MMU system, if non-zero MMU-index is provided, statistics on the specific MMU will be reported."; } leaf snapshot { type boolean; default 'false'; description "Get buffer pool statistics from snapshot."; } leaf current-occupancy-bytes { type yang:gauge64; config false; description "current shared buffer occupancy in bytes"; } leaf watermark-bytes { type yang:gauge64; description "watermark in the shared buffer in bytes"; } leaf xoff-headroom-occupancy-bytes { type yang:gauge64; config false; description "current headroom buffer occupancy in bytes"; } leaf xoff-headroom-watermark-bytes { type yang:gauge64; description "watermark in the headroom buffer in bytes"; } uses wred-stat; uses wred-ecn-stat; } // list buffer-pool-stat list buffer-profile { key "id"; description "Buffer Profiles"; leaf id { type base-cmn:base-obj-id-type { range "1..256"; } description "buffer profile id"; } leaf pool-id { type base-cmn:base-obj-id-type; mandatory true; description "buffer pool to be occupied. Zero means no buffer pool is specified; instead global port buffer will be used."; } leaf buffer-size { type uint32; mandatory true; description "buffer size to be reserved"; } leaf threshold-mode { type buffer-threshold-mode; description "If set, this overrides buffer-pool threshold-mode. If not set, use buffer-pool threshold-mode as default."; } leaf shared-dynamic-threshold { type uint8; description "This attribute provides an index to an Alpha value, which is used to calculate the dynamic threshold for shared buffer usage. The valid range is [0..10], an index to the following array of Alpha values, [1/128, 1/64, 1/32, 1/16, 1/8, 1/4, 1/2, 1, 2, 4]. The dynamic buffer threshold is calculated based on the following formula: (Alpha) / ((Number_of_Active_Queues * Alpha) + 1) For example, if Number_of_Active_Queues = 1, then the shared-dynamic-threshold setting of [0..10] results in [1/129, 1/65, 1/33, 1/17, 1/9, 1/5, 1/3, 1/2, 2/3, 4/5, 8/9] of total shared buffer respectively."; } leaf shared-static-threshold { type uint32; description "Static threshold for the shared usage in bytes. Mandatory when the buffer pool threshold mode is static. Zero means no limit for the shared usage"; } leaf xoff-threshold { type uint32; description "Generate XOFF when available buffer in the priority group buffer is below this threshold."; } leaf xon-threshold { type uint32; description "XON non-hysteresis threshold in byte. Generate XON when the total buffer usage of the PG is less than the maximum of xon-threshold and the total buffer limit minus xon-offset-threshold, and available buffer in the PG buffer is larger than the XOFF threshold. The XON trigger condition is governed by: total buffer usage <= max(xon-threshold, total buffer limit - xon-offset-threshold)"; } leaf xon-offset-threshold { type uint32; description "XON hysteresis threshold in byte. Generate XON when the total buffer usage of the PG is less than the maximum of xon-threshold and the total buffer limit minus xon-offset-threshold, and available buffer in the PG buffer is larger than the XOFF threshold. The XON trigger condition is governed by: total buffer usage <= max(xon-threshold, total buffer limit - xon-offset-threshold)"; } leaf name { type string { length "32"; } description "Optional user-provided name for the buffer profile"; } } // list buffer-profile list priority-group { key "port-id local-id"; description "Ingress priority group"; leaf port-id { type base-cmn:logical-ifindex; description "Physical port to which this priority group belongs."; } leaf local-id { type uint8; description "locally unique priority group id within a port."; } leaf id { type base-cmn:base-obj-id-type; config false; description "unique priority group id across the whole switch assigned to this priority group of this port"; } leaf buffer-profile-id { type base-cmn:base-obj-id-type; description "buffer profile id associated to the priority group"; } leaf-list mmu-index-list { type uint32; config false; description "In multi-MMU (Memory Management Unit) architecture, 1-based indexes of the MMUs where the priority group is present."; } } // list priority-group list priority-group-stat { key "ifname local-id mmu-index snapshot"; description "This defines QoS priority group counter statistics."; leaf port-id { type base-cmn:logical-ifindex; status obsolete; description "Physical port to which this priority queue belongs."; } leaf ifname { type if:interface-ref; description "Physical port to which this priority group belongs."; } leaf local-id { type uint8; description "locally unique priority group id within a port."; } leaf mmu-index { type uint32; default '0'; description "In multi-MMU system, if non-zero MMU-index is provided, statistics on the specific MMU will be reported."; } leaf snapshot { type boolean; default 'false'; description "Get priority group statistics from snapshot."; } leaf packets { type yang:counter64; description "rx packets count"; } leaf bytes { type yang:counter64; description "rx bytes count"; } leaf current-occupancy-bytes { type yang:gauge64; config false; description "current priority group occupancy in bytes"; } leaf watermark-bytes { type yang:gauge64; description "watermark of the priority group in bytes"; } leaf shared-current-occupancy-bytes { type yang:gauge64; config false; description "current priority group shared occupancy in bytes"; } leaf shared-watermark-bytes { type yang:gauge64; description "shared occupancy watermark of the priority group in bytes"; } leaf xoff-room-current-occupancy-bytes { type yang:gauge64; config false; description "current priority group xoff room occupancy in bytes"; } leaf xoff-room-watermark-bytes { type yang:gauge64; description "priority group xoff room occupancy watermark in bytes"; } } // list priority-group-stat list port-ingress { key "port-id"; description "Ingress QoS parameters associated with an interface"; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf port-id { type base-cmn:logical-ifindex; description "Physical port on which QoS ingress params are configured. Logical ports like LAG interfaces are not allowed."; } leaf default-traffic-class { type uint32; default '0'; description "Default traffic class assigned to packets on non-trusted ports"; } leaf dot1p-to-tc-map { type base-cmn:base-obj-id-type; description "A valid dot1p-to-tc-map id will enable trust-dot1p on the port; A null map-id (0) will disable the trust dot1p functionality."; } leaf dot1p-to-color-map { type base-cmn:base-obj-id-type; description "A valid dot1p-to-color-map id will color the incoming packet on the port according to the dot1p value of the packet."; } leaf dot1p-to-tc-color-map { type base-cmn:base-obj-id-type; status deprecated; description "A valid dot1p-to-tc-color-map id will enable trust-dot1p on the port, (assigning traffic class) and color the incoming packet on the port according to the dot1p value of the packet."; } leaf dscp-to-tc-map { type base-cmn:base-obj-id-type; description "A valid dscp-to-tc-map id will enable trust-dscp on the port; A null map-id (0) will disable the trust-dscp functionality."; } leaf dscp-to-color-map { type base-cmn:base-obj-id-type; description "A valid dscp-to-color-map id will color the incoming packet on the port according to the dscp value of the packet."; } leaf dscp-to-tc-color-map { type base-cmn:base-obj-id-type; status deprecated; description "A valid dscp-to-color-map id will enable trust-dscp on the port, (assigning traffic class) and color the incoming packet on the port according to the dscp value of the packet."; } leaf tc-to-queue-map { type base-cmn:base-obj-id-type; description "A valid tc-to-queue-map id defines which queue the incoming packet on this source port is sent to; a Null tc-to-queue-map id (0) disable the use of map to queue a packet."; } leaf flow-control { type flow-control; description "TX/RX flow control setting"; } leaf policer_id { type base-cmn:base-obj-id-type; description "Port policer Id"; } leaf flood_storm_control { type base-cmn:base-obj-id-type; description "unknown unicast and unknown multicast storm control policer id"; } leaf broadcast_storm_control { type base-cmn:base-obj-id-type; description "broadcast storm control policer id"; } leaf multicast_storm_control { type base-cmn:base-obj-id-type; description "multicast storm control policer id"; } leaf priority_group_number { type uint32; config false; description "Number of priority groups on this port"; } leaf-list priority_group_id_list { type base-cmn:base-obj-id-type; config false; description "list of priority group ids associated to the port"; } leaf per_priority_flow_control { type uint8; description "bit vector to enable/disable port PFC. Valid from bit 0 to bit 7"; } leaf tc-to-priority-group-map { type base-cmn:base-obj-id-type; description "A valid tc-to-priority-group-map id defines which priority group a packet of a traffic class belongs to. A priority group can apply flow control on the ingress packet."; } leaf priority-group-to-pfc-priority-map { type base-cmn:base-obj-id-type; description "A valid priority-group-to-pfc-priority-map id defines which pfc-priority or pfc-priorities is used for outgoing PAUSE frame when a priority group is congested."; } leaf-list buffer-profile-id-list { type base-cmn:base-obj-id-type; description "ingress buffer profile id list"; } } // list port-ingress list port-egress { key "port-id"; description "Egress QoS parameters associated with an interface"; leaf switch-id { type base-cmn:logical-switch-id; status obsolete; description "Logical Switch to which this interface belongs. The concept of logical switch is obsolete and this attribute is ignored."; } leaf port-id { type base-cmn:logical-ifindex; description "Physical port on which QoS egress params are configured. Logical ports like LAG interfaces are not allowed."; } leaf buffer-limit { type uint64; description "Per Port Buffer limit in bytes"; } leaf wred-profile-id { type base-cmn:base-obj-id-type; status obsolete; description "WRED profile associated with the port"; } leaf scheduler-profile-id { type base-cmn:base-obj-id-type; description "Scheduler profile Id associated to this port for port rate shaping"; } leaf num-unicast-queue { type uint8; config false; description "Number of egress unicast queues associated per port"; } leaf num-multicast-queue { type uint8; config false; description "Number of egress multicast queues associated per port"; } leaf num-queue { type uint8; config false; description "Number of egress queues associated per port for both unicast and multicast traffic"; } leaf-list queue-id-list { type base-cmn:base-obj-id-type; config false; description "List of all queue ids associated to the port"; } leaf tc-to-queue-map { type base-cmn:base-obj-id-type; description "A valid tc-to-queue-map id defines which queue the packet is sent to on this destination port; a Null tc-to-queue-map id (0) disable the use of map to queue a packet."; } leaf tc-to-dot1p-map { type base-cmn:base-obj-id-type; status deprecated; description "A valid tc-to-dot1p-map id defines what dot1p value is set for a packet egressing this destination port; a Null tc-to-dot1p-map id (0) disable the use of map to set dot1p value of a packet."; } leaf tc-to-dscp-map { type base-cmn:base-obj-id-type; status deprecated; description "A valid tc-to-dscp-map id defines what dscp value is set for a packet egressing this destination port; a Null tc-to-dscp-map id (0) disable the use of map to set dscp value of a packet."; } leaf tc-color-to-dot1p-map { type base-cmn:base-obj-id-type; description "A valid tc-color-to-dot1p-map id defines what dot1p value is set for a packet egressing this destination port; a Null tc-color-to-dot1p-map id (0) disable the use of map to set dot1p value of a packet."; } leaf tc-color-to-dscp-map { type base-cmn:base-obj-id-type; description "A valid tc-color-to-dscp-map id defines what dscp value is set for a packet egressing this destination port; a Null tc-color-to-dscp-map id (0) disable the use of map to set dscp value of a packet."; } leaf pfc-priority-to-queue-map { type base-cmn:base-obj-id-type; description "A valid pfc-prioirity-to-queue-map id defines which egress queue shall honor a peer node's PFC request based on the PFC priority of a received PAUSE frame."; } leaf-list buffer-profile-id-list { type base-cmn:base-obj-id-type; description "egress buffer profile id list"; } } // list port-egress list port-pool { key "port-id buffer-pool-id"; description "This list defines per interface per buffer pool characteristics"; leaf port-id { type base-cmn:logical-ifindex; mandatory true; description "Physical port on which QoS egress params are configured. Logical ports like LAG interfaces are not allowed."; } leaf buffer-pool-id { type base-cmn:base-obj-id-type; mandatory true; description "Buffer pool id of the interface."; } leaf wred-profile-id { type base-cmn:base-obj-id-type; description "WRED profile to be applied"; } } // list port-pool list port-pool-stat { key "ifname buffer-pool-id"; description "This list defines per interface per buffer pool counter statistics"; leaf port-id { type base-cmn:logical-ifindex; status obsolete; description "Physical port to which this port pool belongs."; } leaf ifname { type if:interface-ref; description "Physical port on which QoS egress params are configured. Logical ports like LAG interfaces are not allowed."; } leaf buffer-pool-id { type base-cmn:base-obj-id-type; description "Buffer pool id of the interface."; } uses wred-stat; uses wred-ecn-stat; uses buffer-stat; } // list port-pool-stat grouping wred-stat { description "Statistics generated using WRED queuing strategy"; leaf green-discard-dropped-packets { type yang:counter64; description "WRED green color dropped packets count"; } leaf green-discard-dropped-bytes { type yang:counter64; description "WRED green color dropped bytes"; } leaf yellow-discard-dropped-packets { type yang:counter64; description "WRED yellow color dropped packets count"; } leaf yellow-discard-dropped-bytes { type yang:counter64; description "WRED yellow color dropped bytes"; } leaf red-discard-dropped-packets { type yang:counter64; description "WRED red color dropped packets count"; } leaf red-discard-dropped-bytes { type yang:counter64; description "WRED red color dropped bytes"; } leaf discard-dropped-packets { type yang:counter64; description "WRED dropped packets count"; } leaf discard-dropped-bytes { type yang:counter64; description "WRED dropped bytes"; } } // grouping wred-stat grouping wred-ecn-stat { description "Statistics generated using WRED-ECN queuing strategy"; leaf green-wred-ecn-marked-packets { type yang:counter64; description "WRED green color ECN marked packets count"; } leaf green-wred-ecn-marked-bytes { type yang:counter64; description "WRED green color ECN marked bytes"; } leaf yellow-wred-ecn-marked-packets { type yang:counter64; description "WRED yellow color ECN marked packets count"; } leaf yellow-wred-ecn-marked-bytes { type yang:counter64; description "WRED yellow color ECN marked bytes"; } leaf red-wred-ecn-marked-packets { type yang:counter64; description "WRED red color ECN marked packets count"; } leaf red-wred-ecn-marked-bytes { type yang:counter64; description "WRED red color ECN marked bytes"; } leaf wred-ecn-marked-packets { type yang:counter64; description "WRED ECN marked packets count"; } leaf wred-ecn-marked-bytes { type yang:counter64; description "WRED ECN marked bytes"; } } // grouping wred-ecn-stat grouping buffer-stat { description "Different statistics related to buffering"; leaf current-occupancy-bytes { type yang:gauge64; config false; description "current buffer occupancy in bytes"; } leaf watermark-bytes { type yang:gauge64; description "watermark bytes"; } leaf shared-current-occupancy-bytes { type yang:gauge64; description "current shared buffer occupancy in bytes"; } leaf shared-watermark-bytes { type yang:gauge64; description "shared buffer occupancy watermark in bytes"; } } // grouping buffer-stat grouping thresholds { description "Different statistics related to thresolds"; leaf min-threshold { type uint32; description "Minimum threshold in bytes after which packets will be dropped based on the drop probability"; } leaf max-threshold { type uint32; description "Maximum threshold in bytes after which packets will be tail dropped"; } leaf probability { type uint32 { range "0..100"; } default '100'; description "Percentage probability with which packets will be dropped or ecn-marked when minimum threshold is reached"; } } // grouping thresholds } // module dell-base-qos
© 2023 YumaWorks, Inc. All rights reserved.