diff options
author | Andrej Kozemcak <andrej.kozemcak@pantheon.tech> | 2018-12-20 17:49:33 +0100 |
---|---|---|
committer | Andrej Kozemcak <andrej.kozemcak@pantheon.tech> | 2018-12-20 17:51:10 +0100 |
commit | 639509ad42f8bd6baf9b6f5b668a9bbfb05108d4 (patch) | |
tree | 83de866d2e47bd71dae0c6ff9e03f51c3269413b /src/plugins/yang/openconfig/openconfig-qos-elements.yang | |
parent | ba089324594f450a1b549906ec7fde1ba63a1e89 (diff) |
Add Openconfig YANG modules.
Change-Id: I7e98bf1ca7196cff042a35b8bf096d2ea9d80028
Signed-off-by: Andrej Kozemcak <andrej.kozemcak@pantheon.tech>
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-qos-elements.yang')
-rw-r--r-- | src/plugins/yang/openconfig/openconfig-qos-elements.yang | 1304 |
1 files changed, 1304 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-qos-elements.yang b/src/plugins/yang/openconfig/openconfig-qos-elements.yang new file mode 100644 index 0000000..b862db2 --- /dev/null +++ b/src/plugins/yang/openconfig/openconfig-qos-elements.yang @@ -0,0 +1,1304 @@ +submodule openconfig-qos-elements { + + belongs-to openconfig-qos { + prefix "oc-qos"; + } + + import openconfig-extensions { prefix oc-ext; } + import openconfig-qos-types { prefix oc-qos-types; } + import openconfig-packet-match { prefix oc-pkt-match; } + import openconfig-platform { prefix oc-platform; } + import openconfig-types { prefix oc-types; } + + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This submodule defines configuration and operational state + data associated with QoS elements. The primary elements of + the model include: + + classifiers: match packets with a specific characteristic + + forwarding groups: logical class of packets that receive + common forwarding treatment + + queues: collection of packets to be scheduled, including + a queue management scheme + + schedulers: sequence of one more elements that schedule + packets for transmission, including policer and shaper + functions"; + + oc-ext:openconfig-version "0.2.0"; + + 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-classifier-term-config { + description + "Configuration data for list of match criteria in a QoS + classifier"; + + leaf id { + type string; + description + "Identifier for the match term"; + } + } + + grouping qos-classifier-term-state { + description + "Operational state data for list of match criteria in a QoS + classifier"; + } + + grouping qos-classifier-term-action-config { + description + "Configuration parameters for actions for a classifier term."; + + leaf target-group { + type leafref { + // Current location: + // /qos/classifiers/classifier/terms/term/actions/config/target-group + path "../../../../../../../forwarding-groups/forwarding-group/" + + "config/name"; + } + description + "References the forwarding group or class to which the + matched packets should be assigned"; + } + } + + grouping qos-classifier-terms-top { + description + "Top-level grouping for list of match criteria in a QoS + classifier"; + + container terms { + description + "Enclosing container for ths list of terms"; + + list term { + key "id"; + description + "List of match terms used in the classifier"; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to id list key."; + } + + container config { + description + "Configuration data for list of match criteria in a QoS + classifier"; + + uses qos-classifier-term-config; + } + + container state { + config false; + description + "Operational state data for list of match criteria in a + QoS classifier"; + + uses qos-classifier-term-config; + uses qos-classifier-term-state; + } + + container conditions { + description + "Conditions for the classifier term. Packets must match all of + the criteria specified within the match condition to be considered + matching the term."; + + // TODO(robjs): Consider whether we should have classifiers + // that can match >1 different value of a field, or whether + // this should require different match terms within the + // classifier. + uses oc-pkt-match:ethernet-header-top; + uses oc-pkt-match:ipv4-protocol-fields-top; + uses oc-pkt-match:ipv6-protocol-fields-top; + uses oc-pkt-match:transport-fields-top; + uses oc-pkt-match:mpls-header-top; + } + + container actions { + description + "Actions to be applied for packets matching the specified + classification rules."; + + container config { + description + "Actions to be applied to packets that match the classifier + term."; + + uses qos-classifier-term-action-config; + } + + container state { + config false; + description + "Operational state parameters associated with classifier term + actions"; + + uses qos-classifier-term-action-config; + } + + container remark { + description + "Remark actions to be associated with packets that match the + classifier term. Where a packet matches these criteria, the + specified rewrite actions should be performed."; + + uses qos-common-remark-actions; + } + } + } + } + } + + grouping qos-classifier-config { + description + "Configuration data for classifiers"; + + leaf name { + type string; + description + "User-assigned name of the classifier"; + } + + leaf type { + type enumeration { + enum IPV4 { + description + "Classifier matches and operates + on packets with IPv4 headers."; + } + enum IPV6 { + description + "Classifier matches and operates + on packets with IPv6 headers."; + } + enum MPLS { + description + "Classifier matches and operates + on packets with MPLS headers."; + } + enum ETHERNET { + description + "Classifier matches and operates + on fields within the L2 ETHERNET + headers."; + } + } + description + "Type of classifier."; + } + } + + grouping qos-classifier-state { + description + "Operational state data for classifiers"; + + } + + grouping qos-classifier-top { + description + "Top-level grouping for classifier data"; + + container classifiers { + description + "Enclosing container for QoS classifiers"; + + list classifier { + key "name"; + description + "List of classifier elements"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to list key name"; + } + + container config { + description + "Configuration data for classifers"; + + uses qos-classifier-config; + } + + container state { + config false; + description + "Operational state data for classifiers"; + + uses qos-classifier-config; + uses qos-classifier-state; + } + + uses qos-classifier-terms-top; + } + } + } + + grouping qos-fabric-trace-config { + description + "Configuration data for fabric trace data"; + + leaf source { + type leafref { + path "/oc-platform:components/oc-platform:component" + + "/oc-platform:config/oc-platform:name"; + } + description + "Source component for fabric trace data"; + } + + leaf dest { + type leafref { + path "/oc-platform:components/oc-platform:component" + + "/oc-platform:config/oc-platform:name"; + } + description + "Destination component for fabric trace data"; + } + } + + grouping qos-forwarding-group-config { + description + "Configuration data for forwarding groups"; + + leaf name { + type string; + description + "Name of the forwarding group"; + } + + // TODO(robjs, Simon G): Discuss optionally moving + // this to a high/low priority indicator, if this + // is common across implementations. + leaf fabric-priority { + type uint8; + description + "Set the priority for the forwarding group for + local transmission through the device, e.g., + across a switching fabric. Higher priorities + are considered to be better, such that traffic + with fabric priority 128 is considered to be + higher priority than that with fabric priority + 0."; + } + + leaf output-queue { + type leafref { + path "../../../../queues/queue/config/name"; + } + description + "Queue for packets in this forwarding group."; + } + } + + grouping qos-forwarding-group-state { + description + "Operational state data for forwarding groups"; + } + + grouping qos-forwarding-group-top { + description + "Top-level grouping for forwarding group data"; + + container forwarding-groups { + description + "Enclosing container for list of forwarding groups"; + + list forwarding-group { + key "name"; + description + "List of forwarding groups. Forwarding groups are + logical groups of traffic that will receive common + forwarding treatment."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to name list key"; + } + + container config { + description + "Configuration data for forwarding groups"; + + uses qos-forwarding-group-config; + } + + container state { + config false; + description + "Operational state data for forwarding groups"; + + uses qos-forwarding-group-config; + uses qos-forwarding-group-state; + } + } + } + } + + grouping qos-queue-red-common-config { + description + "Common configuration parameters applicable to RED and + its variants"; + + leaf enable-ecn { + type boolean; + default false; + description + "When set to true, the device should mark packets that are + ECN-capable rather than dropping them. The receiver is + expected to echo the congestion signal back to the sender + so that it may adjust its transmission rate accordingly. + When this leaf is false, the device drops packets according + to the RED/WRED probability, or all packets if the + average queue length is above the max threshold."; + } + } + + grouping qos-queue-red-common-state { + description + "Common operational state data applicable to RED and + its variants"; + + } + + grouping qos-queue-wred-config { + description + "Configuration data for WRED-managed queues"; + + // TODO(robjs, aashaikh): Add configuration for weighted RED + // within this grouping. + } + + grouping qos-queue-wred-state { + description + "Operational state data for WRED-managed queues"; + } + + grouping qos-queue-wred-top { + description + "Top-level grouping for WRED-managed queues"; + + container wred { + description + "Top-level container for WRED data"; + + container config { + description + "Configuration data for WRED"; + + uses qos-queue-wred-config; + } + + container state { + config false; + description + "Operational state data for WRED"; + + uses qos-queue-wred-config; + uses qos-queue-wred-state; + } + } + } + + grouping qos-queue-red-config { + description + "Configuration data for queues managed with RED"; + + leaf minth { + type uint64; + units bytes; + description + "The mininum threshold parameter for a RED-managed queue. + When the average queue length is less than minth, all + packets are admitted to the queue."; + } + + leaf maxth { + type uint64; + units bytes; + description + "The maximum threshold parameter for a RED-managed queue. + When the average queue length exceeds the maxth value, all + packets are dropped (or marked if ECN is enabled)."; + } + } + + grouping qos-queue-red-state { + description + "Operational state data for queues managed with RED"; + } + + grouping qos-queue-red-top { + description + "Top-level grouping for RED queues"; + + container red { + description + "Top-level container for data related to RED-managed + queues"; + + container config { + description + "Configuration data for RED queues"; + + uses qos-queue-red-config; + } + + container state { + config false; + description + "Operational state data for RED queues"; + + uses qos-queue-red-config; + uses qos-queue-red-state; + } + } + } + + + grouping qos-queue-config { + description + "Configuration data for QoS egress queues"; + + leaf name { + type string; + description + "User-defined name of the queue"; + } + + leaf queue-type { + type identityref { + base oc-qos-types:QOS_QUEUE_TYPE; + } + description + "Sets the type of the queue"; + } + } + + grouping qos-queue-state { + description + "Operational state data for egress queues"; + } + + grouping qos-queue-top { + description + "Top-level grouping for queue elements"; + + container queues { + description + "Enclosing container for the list of queues"; + + list queue { + key "name"; + description + "List of defined queues"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the queue name list key."; + } + + container config { + description + "Configuration data for queues"; + + uses qos-queue-config; + } + + container state { + config false; + description + "Operational state data for queues"; + + uses qos-queue-config; + uses qos-queue-state; + } + + uses qos-queue-red-top { + when "../config/queue-type = 'oc-qos-types:RED'" { + description + "RED configuration is valid when the queue-type + is set accordingly."; + } + } + uses qos-queue-wred-top { + when "../config/queue-type = 'oc-qos-types:WRED'" { + description + "WRED configuration is valid when the queue-type + is set accordingly."; + } + } + } + } + } + + grouping qos-scheduler-output-config { + description + "Configuration data for scheduler output operations"; + + leaf output-type { + type enumeration { + enum SCHEDULER { + description + "Scheduler output is a child scheduler, e.g. to + implement hierarchical schedulers."; + } + enum FWD_GROUP { + description + "Scheduler output is a forwarding group, e.g., when + performing ingress scheduling before packets traverse + a fabric to be processed by an egress forwarding + complex."; + } + enum INTERFACE { + description + "Scheduler output is an interface for forwarding."; + } + } + description + "Describes the type of output sink for the scheduler."; + } + + leaf child-scheduler { + // TODO: consider whether both child (output) and parent + // (input) references are needed; consider whether child + // reference should separate in-profile and out-of-profile + type leafref { + // current loc: + // /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/ + // output/config/child-scheduler + path "../../../../../../../scheduler-policies/scheduler-policy/" + + "config/name"; + } + when "../output-type = 'SCHEDULER'" { + description + "The child-scheduler leaf is valid only when + the output type of the scheduler is a child scheduler"; + } + description + "When the scheduler output type is a child scheduler, + this leaf provides a reference to the downstream + scheduler."; + } + + leaf output-fwd-group { + type leafref { + path "../../../../../../../forwarding-groups/forwarding-group" + + "/config/name"; + } + when "../output-type = 'FWD_GROUP'" { + description + "The output-fwd-group leaf is valid only when + the output type of the scheduler is a forwarding group"; + } + description + "When the scheduler output type is a forwarding group, + this leaf provides a reference to the forwarding group."; + } + } + + grouping qos-scheduler-output-state { + description + "Operational state data for scheduler output"; + } + + grouping qos-scheduler-output-top { + description + "Top-level grouping for data related to scheduler output"; + + container output { + description + "Top-level container for scheduler output data"; + + container config { + description + "Configuration data for scheduler output"; + + uses qos-scheduler-output-config; + } + + container state { + config false; + description + "Operational state data for scheduler output"; + + uses qos-scheduler-output-config; + uses qos-scheduler-output-state; + } + } + } + + grouping qos-scheduler-inputs-config { + description + "Configuration data for scheduler input sources"; + + leaf id { + type string; + description + "User-defined identifier for the scheduler input"; + } + + leaf input-type { + type enumeration { + enum QUEUE { + description + "Input is a defined queue."; + } + enum IN_PROFILE { + description + "Input is in-profile traffic from a parent scheduler/ + shaper"; + } + enum OUT_PROFILE { + description + "Input is out-of-profile traffic from a parent + scheduler/shaper"; + } + } + description + "Describes the type of input source for the scheduler"; + } + + leaf queue { + type leafref { + // current loc: /qos/scheduler-policies/scheduler-policy/schedulers/ + // scheduler/inputs/input/config/queue + path "../../../../../../../../queues/queue/name"; + } + when "../input-type = 'QUEUE'" { + description + "The queue leaf is valid only when + the input type of the scheduler is a queue"; + } + description + "Reference to a queue that is an input source for the + scheduler"; + } + + leaf weight { + type uint64; + description + "For priority schedulers, this indicates the priority of + the corresponding input. Higher values indicate higher + priority. For weighted round-robin schedulers, this leaf + indicates the weight of the corresponding input."; + } + } + + grouping qos-scheduler-inputs-state { + description + "Operational state data for scheduler input sources"; + } + + grouping qos-scheduler-inputs-top { + description + "Top-level grouping for defining inputs to a scheduler."; + + container inputs { + description + "Enclosing container "; + + list input { + key "id"; + description + "List of input sources for the scheduler."; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to list key"; + } + + container config { + description + "Configuration data for scheduler input sources"; + + uses qos-scheduler-inputs-config; + } + + container state { + config false; + description + "Operational state data for scheduler input sources"; + + uses qos-scheduler-inputs-config; + uses qos-scheduler-inputs-state; + } + } + } + } + + grouping qos-scheduler-1r2c-config { + description + "Configuration data for 1 rate, 2 color scheduler."; + + leaf cir { + type uint64; + units bps; + description + "Committed information rate for the single-rate token + bucket scheduler. This value represents the rate at which + tokens are added to the bucket."; + } + + leaf cir-pct { + type oc-types:percentage; + description + "Committed information rate for the single-rate token + bucket scheduler. This value represents the rate at which + tokens are added to the bucket. It is expressed as a + percentage of the total bandwidth allocated to the + context in which the scheduler is referenced."; + } + + leaf cir-pct-remaining { + type oc-types:percentage; + description + "Committed information rate for the single-rate token + bucket scheduler. This value represents the rate at which + tokens are added to the bucket. It is expressed as a + percentage of the unallocated bandwidth available in the + context in which the scheduled is referenced."; + } + + leaf bc { + type uint32; + units bytes; + description + "Committed burst size for the single-rate token bucket + scheduler. This value represents the depth of the token + bucket."; + } + + leaf queuing-behavior { + type oc-qos-types:queue-behavior; + description + "The type of scheduler that is being configured."; + } + + // TODO(robjs): Add when statements to these parameters when the + // types of scheduler are agreed through review. + leaf max-queue-depth-bytes { + type uint32; + units bytes; + description + "When the scheduler is specified to be a shaper - the + maximum depth of the queue in bytes is the value + specified by this leaf."; + } + + leaf max-queue-depth-packets { + type uint32; + units packets; + description + "When the scheduler is specified to be a shaper - the + maximum depth of the queue in packets is the value + specified by this leaf."; + } + + leaf max-queue-depth-percent { + type oc-types:percentage; + description + "The queue depth specified as a percentage of the total + available buffer that is avaialble."; + } + } + + grouping qos-scheduler-1r2c-top { + description + "Top-level grouping for 1 rate, 2 color shapers"; + + container one-rate-two-color { + description + "Top-level container for data related to a 1 rate, 2 color + shaper."; + + container config { + description + "Configuration data for 1 rate, 2 color shapers"; + + uses qos-scheduler-1r2c-config; + } + + container state { + config false; + description + "Operational state data for 1 rate, 2 color shapers"; + + uses qos-scheduler-1r2c-config; + } + + container conform-action { + description + "Action to be applied to packets that are scheduled within the + CIR of the one-rate, two-colour scheduler. Packets that receive + a token from the in-CIR bucket are said to be conforming and + have all of the specified actions applied."; + + container config { + description + "Configuration parameters relating to conforming packets for the + 1r2c scheduler."; + + uses qos-common-remark-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to conforming packets + for the 1r2c scheduler."; + + uses qos-common-remark-actions-config; + } + } + + container exceed-action { + description + "Action to be applied to packets that are scheduled above the CIR + of the one-rate, two-colour shaper. Packets that do not receive a + token from the in-CIR bucket are said to be exceeding, and have + all of the specified actions applied."; + + container config { + description + "Configuration parameters relating to exceeding packets for + the 1r2c scheduler."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to exceeding + packets for the 1r2c scheduler."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + } + } + } + + grouping qos-scheduler-2r3c-config { + description + "Configuration data for 2 rate, 3 color policer"; + + leaf cir { + type uint64; + units bps; + description + "Committed information rate for the dual-rate token + bucket policer. This value represents the rate at which + tokens are added to the primary bucket."; + } + + leaf cir-pct { + type oc-types:percentage; + description + "Committed information rate for the dual-rate token bucket + policer. This value represents the rate at which tokens + are added to the primary bucket. It is expressed as a + percentage of the total bandwidth available within the + context the scheduler is instantiated."; + } + + leaf cir-pct-remaining { + type oc-types:percentage; + description + "Committed information rate for the dual-rate token + bucket policer. This value represents the rate at which + tokens are added to the primary bucket. It is expressed + as a percentage of the remaining bandwidth within the + context the scheduler is instantiated."; + } + + leaf pir { + type uint64; + units bps; + description + "Peak information rate for the dual-rate token bucket + policer. This value represents the rate at which tokens + are added to the secondary bucket."; + } + + leaf pir-pct { + type oc-types:percentage; + description + "Peak information rate for the dual-rate token bucket + policer. This value represents the rate at which tokens + are added to the secondary bucket. The value is expressed + as a percentage of the total bandwidth available in the + context in which the scheduler is instantiated."; + } + + leaf pir-pct-remaining { + type oc-types:percentage; + description + "Peak information rate for the dual-rate token + bucket policer. This value represents the rate at which + tokens are added to the secondary bucket. It is expressed + as a percentage of the remaining bandwidth within the + context the scheduler is instantiated."; + } + + leaf bc { + type uint32; + units bytes; + description + "Committed burst size for the dual-rate token bucket + policer. This value represents the depth of the token + bucket."; + } + + leaf be { + type uint32; + units bytes; + description + "Excess burst size for the dual-rate token bucket policer. + This value represents the depth of the secondary bucket."; + } + } + + grouping qos-scheduler-2r3c-top { + description + "Top-level grouping for 2 rate, 3 color policers.."; + + container two-rate-three-color { + description + "Top-level container for data for a 2 rate, 3 color policer."; + + container config { + description + "Configuration data for 2 rate, 3 color policers."; + + uses qos-scheduler-2r3c-config; + } + + container state { + config false; + description + "Operational state data for 2 rate, 3 color policers."; + + uses qos-scheduler-2r3c-config; + } + + container conform-action { + description + "Action to be applied to the packets that are scheduled + within the CIR of the policer. All packets that receive + a token from this bucket have all actions specified + applied to them"; + + container config { + description + "Configuration parameters for the conform action of a + 2r3c policer."; + uses qos-common-remark-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to the conform + action of a 2r3c policer."; + uses qos-common-remark-actions-config; + } + } + + container exceed-action { + description + "Action to be applied to the packets that are scheduled + within the PIR of the policer. Packets that receive a + token from within the PIR allocation have all the + specified actions applied to them"; + + container config { + description + "Configuration parameters relating to the action + applied to exceeding packets."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to the action + applied to exceeding packets."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + } + + container violate-action { + description + "Action to be applied to the packets that are scheduled + above the PIR of the policer. Packets that do not receive + a token from either bucket have all specified actions + applied to them."; + + container config { + description + "Configuration parameters relating to the action + applied to violating packets."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to the action + applied to violating packets."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + } + } + } + + grouping qos-scheduler-config { + description + "Configuration data for QoS schedulers"; + + leaf sequence { + type uint32; + description + "Sequence number for the scheduler within the scheduler + policy. Schedulers are processed from lowest sequence + to highest."; + } + + leaf type { + type identityref { + base oc-qos-types:QOS_SCHEDULER_TYPE; + } + description + "Sets the type of scheduler, i.e. the scheduling algorithm + used to serve inputs."; + } + + leaf priority { + type enumeration { + enum STRICT { + description + "This scheduler term is considered as a strict priority + term - such that packets that arrive in the queue are + immediately serviced."; + } + } + description + "Priority of the scheduler within the scheduler policy."; + } + } + + grouping qos-scheduler-state { + description + "Operational state data for QoS schedulers"; + } + + grouping qos-scheduler-policy-config { + description + "Configuration parameters relating to a scheduler policy"; + + leaf name { + type string; + description + "Name for the scheduler policy."; + } + } + + grouping qos-scheduler-top { + description + "Top-level grouping for the set of defined QoS schedulers"; + + container scheduler-policies { + description + "Enclosing container for the list of configured scheduler policies."; + + list scheduler-policy { + key "name"; + + description + "List of scheduler policies. A scheduler policy is a set of schedulers + that are to be applied together. Each scheduler within a scheduler + policy takes an input, and outputs it according to a scheduling + discipline that is specified within it. The schedulers consume + resources according to the specification that is provided - which + may be absolute resource limits, or relative."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name of the scheduler policy"; + } + + container config { + description + "Configuration parameters relating to a scheduler policy."; + uses qos-scheduler-policy-config; + } + + container state { + config false; + description + "Operational state parameters relating to a scheduler policy."; + uses qos-scheduler-policy-config; + } + + container schedulers { + description + "Schedulers within the scheduler policy."; + + list scheduler { + key "sequence"; + description + "List of defined QoS traffic schedulers."; + + leaf sequence { + type leafref { + path "../config/sequence"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for QoS schedulers"; + + uses qos-scheduler-config; + } + + container state { + config false; + + description + "Operational state data for QoS schedulers"; + + uses qos-scheduler-config; + uses qos-scheduler-state; + } + + uses qos-scheduler-inputs-top; + uses qos-scheduler-output-top; + uses qos-scheduler-1r2c-top; + uses qos-scheduler-2r3c-top; + } + } + } + } + } + + grouping qos-common-remark-actions { + description + "Common grouping specifying actions related to re-marking + packets"; + + container config { + description + "Configuration parameters relating to remarking packets."; + uses qos-common-remark-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to remarking packets."; + uses qos-common-remark-actions-config; + } + } + + grouping qos-common-scheduler-actions-config { + description + "Configuration data for common actions of a QoS scheduler."; + + leaf drop { + type boolean; + description + "If set to true, packets within this context are dropped."; + } + } + + grouping qos-common-remark-actions-config { + description + "Configuration data for QoS re-marking actions"; + + leaf set-dscp { + type uint8; + description + "Sets the 6-bit DSCP (differentiated services code point) + value in the IP packet header."; + reference + "RFC 2474 - Definition of the Differentiated Services Field + (DS Field) in the IPv4 and IPv6 Headers"; + } + + leaf set-dot1p { + type uint8; + description + "Sets the 3-bit class-of-service value in the + Ethernet packet header for 802.1Q VLAN-tagged packets, + also known as PCP (priority code point)."; + reference + "IEEE 802.1Q-2014 - IEEE Standard for Local and metropolitan + area networks--Bridges and Bridged Networks"; + } + + leaf set-mpls-tc { + type uint8; + description + "Sets the 3-bit traffic class value (also referred to as EXP + or CoS) in MPLS packets."; + reference + "RFC 3270 - Multi-Protocol Label Switching (MPLS) Support of + Differentiated Services"; + } + } +} |