1 module qos-profile-1-0 {
\r
3 namespace "urn:onf:yang:qos-profile-1-0";
\r
6 import ietf-yang-types {
\r
9 import core-model-1-4 {
\r
14 "openBackhaul.com proposal to Open Networking Foundation (ONF)";
\r
16 "WG Web : https://github.com/openBackhaul/Overview
\r
17 WG List: QosProfile@openBackhaul.com
\r
18 Editor : Thorsten Heinze
\r
19 Email : Thorsten.Heinze@openBackhaul.com";
\r
21 "Copyright 2019 openBackhaul.com
\r
23 Licensed under the Apache License, Version 2.0 (the 'License');
\r
24 you may not use this file except in compliance with the License.
\r
25 You may obtain a copy of the License at
\r
26 http://www.apache.org/licenses/LICENSE-2.0
\r
27 Unless required by applicable law or agreed to in writing, software
\r
28 distributed under the License is distributed on an 'AS IS' BASIS,
\r
29 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
30 See the License for the specific language governing permissions and
\r
31 limitations under the License.";
\r
33 revision 2020-01-24 {
\r
35 "Model for the Transport SDN Pilot at Telefonica Germany.
\r
36 Please view https://github.com/openBackhaul/qosProfile/issues for changes.";
\r
38 "https://github.com/openBackhaul/qosProfile/tree/tsp: Model definition
\r
39 https://github.com/openBackhaul/onfCoreIm/tree/tsp: ONF TR-512 Core IM incl. Profile and enhanced Equipment definition";
\r
41 revision 2019-07-12 {
\r
43 "Model for the Transport SDN Pilot at Telefonica Germany.
\r
44 Please view https://github.com/openBackhaul/qosProfile/issues for changes.";
\r
46 "https://github.com/openBackhaul/qosProfile/tree/tsp: Model definition
\r
47 https://github.com/openBackhaul/onfCoreIm/tree/tsp: ONF TR-512 Core IM incl. Profile and enhanced Equipment definition";
\r
50 identity PROFILE_NAME_TYPE_QOS_PROFILE {
\r
51 base core-model:PROFILE_NAME_TYPE;
\r
56 augment "/core-model:control-construct/core-model:profile-collection/core-model:profile" {
\r
57 when "derived-from-or-self(./core-model:profile-name, 'qos-profile:PROFILE_NAME_TYPE_QOS_PROFILE')";
\r
58 uses qos-profile-spec;
\r
63 /****************************************
\r
64 * package notifications
\r
65 **************************************/
\r
67 notification object-creation-notification {
\r
68 uses object-creation-notification;
\r
73 grouping object-creation-notification {
\r
79 "Counts object creation notifications.";
\r
82 type yang:date-and-time;
\r
83 default "2010-11-20T14:00:00+01:00";
\r
88 leaf object-id-ref {
\r
90 path "/core-model:control-construct/core-model:profile-collection/core-model:profile/core-model:uuid";
\r
91 require-instance false;
\r
99 default "Type of created object not specified.";
\r
108 notification object-deletion-notification {
\r
109 uses object-deletion-notification;
\r
114 grouping object-deletion-notification {
\r
120 "Counts object deletion notifications.";
\r
123 type yang:date-and-time;
\r
124 default "2010-11-20T14:00:00+01:00";
\r
129 leaf object-id-ref {
\r
131 path "/core-model:control-construct/core-model:profile-collection/core-model:profile/core-model:uuid";
\r
132 require-instance false;
\r
142 /****************************************
\r
143 * grouping statements for object classes
\r
144 **************************************/
\r
146 grouping qos-profile-spec {
\r
147 container qos-profile-pac {
\r
148 uses qos-profile-pac;
\r
156 grouping qos-profile-pac {
\r
157 container qos-profile-capability {
\r
159 uses qos-profile-capability;
\r
163 container qos-profile-configuration {
\r
165 uses qos-profile-configuration;
\r
173 grouping qos-profile-capability {
\r
174 leaf profile-naming-is-avail {
\r
179 "1 = There is a free text field available for naming the profile.";
\r
181 leaf-list available-queue-list {
\r
182 type queue-name-type;
\r
187 "List of queues, which are available at the physical interface.";
\r
189 leaf drop-precedence-at-be-queue-is-avail {
\r
194 "1 = Configuration of the drop precedence is available at the best effort queue.";
\r
196 leaf drop-precedence-at-af-queues-is-avail {
\r
201 "1 = Configuration of the drop precedence is available at the assured forwarding queues.";
\r
203 leaf drop-precedence-at-prio-queues-is-avail {
\r
208 "1 = Configuration of the drop precedence is available at the priority queues.";
\r
210 leaf available-qos-profile-kind-list {
\r
211 type qos-profile-kind-type;
\r
212 default "QOS_PROFILE_KIND_TYPE_NOT_YET_DEFINED";
\r
215 "List of header information that are supported to be base of the QoS definition.";
\r
221 grouping qos-profile-configuration {
\r
222 leaf profile-name {
\r
224 default "Name of profile not yet defined.";
\r
226 "Identifier of the profile. Could be a name, could be a number. Free text field to be filled by the operator.";
\r
228 leaf qos-profile-kind {
\r
229 type qos-profile-kind-type;
\r
230 default "QOS_PROFILE_KIND_TYPE_NOT_YET_DEFINED";
\r
232 "Defines whether the sorting into queues is done based on VLAN, MPLS or IP header information.";
\r
234 list ingress-8021p-to-per-hop-behavior-mapping-list {
\r
235 key "queue-name drop-precedence-inside-queue";
\r
238 uses per-hop-behavior-type;
\r
240 "Only relevant when qosProfileKind == IEEE8021P. Associates the value of the three p-bits of the VLAN header with a per hop behavior at the physical interface. First entry in the list [0] relates to p-bit value '0'. Last entry in the list [7] relates to p-bit value '7'.";
\r
242 list ingress-exp-to-per-hop-behavior-mapping-list {
\r
243 key "queue-name drop-precedence-inside-queue";
\r
246 uses per-hop-behavior-type;
\r
248 "Only relevant when qosProfileKind == MPLS_EXP. Associates the value of the three p-bits of the MPLS header with a per hop behavior at the physical interface. First entry in the list [0] relates to p-bit value '0'. Last entry in the list [7] relates to p-bit value '7'.";
\r
250 list ingress-ip-dscp-to-per-hop-behavior-mapping-list {
\r
251 key "queue-name drop-precedence-inside-queue";
\r
254 uses per-hop-behavior-type;
\r
256 "Only relevant when qosProfileKind == IP_DSCP. Associates the value of the 8 dscp bits of the IP header with a per hop behavior at the physical interface. First entry in the list [0] relates to dscp value '0'. Last entry in the list [63] relates to dscp value '63'.";
\r
258 leaf writing-per-hop-behavior-into-8021p-is-on {
\r
262 "1 = Original content of 802.1p bits is overwritten with local per hop behavior.";
\r
264 list egress-per-hop-behavior-to-8021p-mapping-list {
\r
265 key "mapping-number";
\r
267 uses egress-per-hop-behavior-to-priority-bits-mapping-type;
\r
269 "Only relevant if (writingPerHopBehaviorInto8021pIsOn==1). Translates (queue and drop precedence) into values of the three p-bits of the VLAN header.";
\r
271 leaf writing-per-hop-behavior-into-mpls-exp-is-on {
\r
275 "1 = Original content of MPLS EXP bits is overwritten with local per hop behavior.";
\r
277 list egress-per-hop-behavior-to-mpls-exp-mapping-list {
\r
278 key "mapping-number";
\r
280 uses egress-per-hop-behavior-to-priority-bits-mapping-type;
\r
282 "Only relevant if (writingPerHopBehaviorIntoMplsExpIsOn==1). Translates (queue and drop precedence) into values of the three p-bits of the MPLS header.";
\r
284 leaf writing-per-hop-behavior-into-ip-dscp-is-on {
\r
288 "1 = Original content of IP DSCP bits is overwritten with local per hop behavior.";
\r
290 list egress-per-hop-behavior-to-ip-dscp-mapping-list {
\r
291 key "mapping-number";
\r
293 uses egress-per-hop-behavior-to-priority-bits-mapping-type;
\r
295 "Only relevant if (writingPerHopBehaviorIntoIpDscpIsOn==1). Translates (queue and drop precedence) into values of the six dscp bits of the IP header.";
\r
298 "Defines the profile that will be used for mapping between header information and queues (next hop behavior).";
\r
301 /****************************************
\r
302 * typedef statements
\r
303 **************************************/
\r
305 typedef severity-type {
\r
307 base SEVERITY_TYPE;
\r
313 typedef qos-profile-kind-type {
\r
315 base QOS_PROFILE_KIND_TYPE;
\r
321 typedef queue-name-type {
\r
323 base QUEUE_NAME_TYPE;
\r
329 typedef drop-precedence-type {
\r
331 base DROP_PRECEDENCE_TYPE;
\r
337 /*********************************************
\r
338 * grouping statements for complex data types
\r
339 *******************************************/
\r
341 identity SEVERITY_TYPE {
\r
346 identity SEVERITY_TYPE_NON-ALARMED {
\r
347 base SEVERITY_TYPE;
\r
352 identity SEVERITY_TYPE_WARNING {
\r
353 base SEVERITY_TYPE;
\r
358 identity SEVERITY_TYPE_MAJOR {
\r
359 base SEVERITY_TYPE;
\r
364 identity SEVERITY_TYPE_MINOR {
\r
365 base SEVERITY_TYPE;
\r
370 identity QOS_PROFILE_KIND_TYPE {
\r
375 identity QOS_PROFILE_KIND_TYPE_NONE {
\r
376 base QOS_PROFILE_KIND_TYPE;
\r
381 identity QOS_PROFILE_KIND_TYPE_IEEE8021P {
\r
382 base QOS_PROFILE_KIND_TYPE;
\r
387 identity QOS_PROFILE_KIND_TYPE_MPLS_EXP {
\r
388 base QOS_PROFILE_KIND_TYPE;
\r
393 identity QOS_PROFILE_KIND_TYPE_IP_DSCP {
\r
394 base QOS_PROFILE_KIND_TYPE;
\r
399 identity QOS_PROFILE_KIND_TYPE_NOT_YET_DEFINED {
\r
400 base QOS_PROFILE_KIND_TYPE;
\r
405 identity QUEUE_NAME_TYPE {
\r
410 identity QUEUE_NAME_TYPE_BEST_EFFORT_QUEUE {
\r
411 base QUEUE_NAME_TYPE;
\r
416 identity QUEUE_NAME_TYPE_ASSURED_FORWARDING_QUEUE1 {
\r
417 base QUEUE_NAME_TYPE;
\r
422 identity QUEUE_NAME_TYPE_ASSURED_FORWARDING_QUEUE2 {
\r
423 base QUEUE_NAME_TYPE;
\r
428 identity QUEUE_NAME_TYPE_ASSURED_FORWARDING_QUEUE3 {
\r
429 base QUEUE_NAME_TYPE;
\r
434 identity QUEUE_NAME_TYPE_ASSURED_FORWARDING_QUEUE4 {
\r
435 base QUEUE_NAME_TYPE;
\r
440 identity QUEUE_NAME_TYPE_EXPEDITED_FORWARDING_QUEUE {
\r
441 base QUEUE_NAME_TYPE;
\r
446 identity QUEUE_NAME_TYPE_CLASS_SELECTOR_QUEUE6 {
\r
447 base QUEUE_NAME_TYPE;
\r
452 identity QUEUE_NAME_TYPE_CLASS_SELECTOR_QUEUE7 {
\r
453 base QUEUE_NAME_TYPE;
\r
458 identity QUEUE_NAME_TYPE_NOT_YET_DEFINED {
\r
459 base QUEUE_NAME_TYPE;
\r
464 identity DROP_PRECEDENCE_TYPE {
\r
469 identity DROP_PRECEDENCE_TYPE_NONE {
\r
470 base DROP_PRECEDENCE_TYPE;
\r
475 identity DROP_PRECEDENCE_TYPE_LOW {
\r
476 base DROP_PRECEDENCE_TYPE;
\r
478 "Would be equal to GREEN.";
\r
481 identity DROP_PRECEDENCE_TYPE_MEDIUM {
\r
482 base DROP_PRECEDENCE_TYPE;
\r
484 "Would be equal to YELLOW.";
\r
487 identity DROP_PRECEDENCE_TYPE_HIGH {
\r
488 base DROP_PRECEDENCE_TYPE;
\r
490 "Would be equal to RED.";
\r
493 identity DROP_PRECEDENCE_TYPE_NOT_YET_DEFINED {
\r
494 base DROP_PRECEDENCE_TYPE;
\r
499 grouping per-hop-behavior-type {
\r
501 type queue-name-type;
\r
503 "Name of the queue.";
\r
505 leaf drop-precedence-inside-queue {
\r
506 type drop-precedence-type;
\r
508 "(if dropPrecedenceAt*QueueIsAvail for the referenced queue == 0) default value shall be kept and configuration attempts shall be ignored.";
\r
514 grouping egress-per-hop-behavior-to-priority-bits-mapping-type {
\r
515 leaf mapping-number {
\r
520 container per-hop-behavior {
\r
521 uses per-hop-behavior-type;
\r
523 "Per hop behavior, which is to be translated into a p-bit entry in the VLAN, MPLS or IP header.";
\r
525 leaf value-of-priority-bits {
\r
529 "Associated value of the three, three or six p-bits of the VLAN, MPLS or IP header.";
\r