ciena-mef-egress-qos

This YANG module defines Ciena's configuration of queues and schedulers for Egress QoS.

  • Version: 2017-10-23

    ciena-mef-egress-qos@2017-10-23


    
      module ciena-mef-egress-qos {
    
        yang-version 1;
    
        namespace
          "urn:ciena:params:xml:ns:yang:ciena-pn::ciena-mef-egress-qos";
    
        prefix mef-egress-qos;
    
        import ciena-mef-logical-port {
          prefix mef-logical-port;
        }
    
        organization "Ciena Corporation";
    
        contact
          "Web URL: http://www.ciena.com/
             E-mail:  yang@ciena.com
             Postal:  7035 Ridge Road
                      Hanover, Maryland 21076
                      U.S.A.
             Phone:   +1 800-921-1144
             Fax:     +1 410-694-5750";
    
        description
          "This YANG module defines Ciena's configuration of
             queues and schedulers for Egress QoS.";
    
        revision "2017-10-23" {
          description
            "Added missed references and descriptions";
          reference
            "RFC 6020: YANG - A Data Modeling Language for
            the Network Configuration Protocol (NETCONF).
            No specific reference; standard not available.";
    
        }
    
        revision "2016-02-09" {
          description "Initial version";
          reference
            "RFC 6020: YANG - A Data Modeling Language for
            the Network Configuration Protocol (NETCONF).
            No specific reference; standard not available.";
    
        }
    
    
        typedef cos-queue-map-ref {
          type leafref {
            path "/mef-egress-qos:egress-qos/mef-egress-qos:cos-queue-map/mef-egress-qos:name";
          }
          description
            "This type is used by the data models that needs to reference
                 configured CoS queue maps.";
        }
    
        typedef congestion-avoidance-profile-ref {
          type leafref {
            path "/mef-egress-qos:egress-qos/mef-egress-qos:congestion-avoidance-profile/mef-egress-qos:name";
          }
          description
            "This type is used by the data models that needs to reference
                 configured congestion avoidance profiles.";
        }
    
        typedef queue-group-profile-ref {
          type leafref {
            path "/mef-egress-qos:egress-qos/mef-egress-qos:queue-group-profile/mef-egress-qos:name";
          }
          description
            "This type is used by the data models that needs to reference
                 configured queue group profiles.";
        }
    
        typedef queue-group-indirection-ref {
          type leafref {
            path "/mef-egress-qos:egress-qos/mef-egress-qos:queue-group-indirection/mef-egress-qos:name";
          }
          description
            "This type is used by the data models that needs to reference
                 queue-groups indirectly (e.g. where the root port changes dynamically).";
        }
    
        typedef scheduler-profile-ref {
          type leafref {
            path "/mef-egress-qos:egress-qos/mef-egress-qos:scheduler-profile/mef-egress-qos:name";
          }
          description
            "This type is used by the data models that needs to reference
                 configured scheduler-profiles.";
        }
    
        typedef scheduler-ref {
          type leafref {
            path "/mef-egress-qos:egress-qos/mef-egress-qos:scheduler/mef-egress-qos:name";
          }
          description
            "This type is used by the data models that needs to reference
                 configured scheduler.";
        }
    
        typedef queue-group-ref {
          type leafref {
            path "/mef-egress-qos:egress-qos/mef-egress-qos:queue-group/mef-egress-qos:name";
          }
          description
            "This type is used by the data models that needs to reference
                 queue-group-instances directly (e.g. where the root port changes dynamically).";
        }
    
        grouping eqos-parameters-group {
          description
            "Egress QoS parameters used for queue group profiles and scheduler profiles.";
          leaf cir {
            type uint32;
            description
              "Committed information rate for aggregate shaping in kilobits per second.";
          }
    
          leaf cir-percent {
            type uint32;
            description
              "Committed information rate for aggregate shaping on a percentage basis <0..100>.";
          }
    
          leaf cbs {
            type uint32;
            description
              "Committed burst size in kilobytes.";
          }
    
          leaf eir {
            type uint32;
            description
              "Maximum rate for aggregate shaping in kilobits per second.";
          }
    
          leaf eir-percent {
            type uint32;
            description
              "Maximum rate for aggregate shaping on a percentage basis <0..100>.";
          }
    
          leaf ebs {
            type uint32;
            description
              "Maximum burst size in kilobytes.";
          }
        }  // grouping eqos-parameters-group
    
        container egress-qos {
          description
            "List of egress qos configurations.";
          list cos-queue-map {
            key "name";
            description
              "List of cos queue maps.";
            leaf name {
              type string;
              description
                "Name for the CoS queue map.";
            }
    
            leaf cos-count {
              type uint32;
              description
                "Number of CoS values supported (e.g. 8 or 64)";
            }
    
            list map-entry {
              key "cos";
              description
                "List of cos map entries.";
              leaf cos {
                type uint32 {
                  range "0..63";
                }
                description
                  "Internal CoS to use for mapping to a Queue, green-wred-curve and yellow-wred curve.";
              }
    
              leaf queue {
                type uint32;
                description
                  "Queue mapped to by internal CoS";
              }
    
              leaf green-wred-curve {
                type uint32;
                description
                  "WRED curve relative to a Queue to use for traffic whose internal color is Green.";
              }
    
              leaf yellow-wred-curve {
                type uint32;
                description
                  "WRED curve relative to a Queue to use for traffic whose internal color is Yellow.";
              }
            }  // list map-entry
          }  // list cos-queue-map
    
          list congestion-avoidance-profile {
            key "name";
            description
              "List of congestion avoidance profiles.";
            leaf name {
              type string;
              description
                "Name for the profile.";
            }
    
            leaf type {
              type enumeration {
                enum "wred" {
                  value 0;
                  description
                    "Weighted random early detection.";
                }
                enum "red" {
                  value 1;
                  description
                    "Random early detection.";
                }
              }
              description
                "congestion avoidance technique.";
            }
          }  // list congestion-avoidance-profile
    
          list queue-group-profile {
            key "name";
            description
              "Defines the characteristics of an instance of a group of queues.";
            leaf name {
              type string;
              description
                "Name for the profile.";
            }
    
            leaf queue-count {
              type uint32;
              description
                "Number of queues in the associated queue-group instances.";
            }
    
            leaf cos-queue-map {
              type cos-queue-map-ref;
              description
                "cos-queue map to use for mapping CoS to a queue.";
            }
    
            list queue {
              key "queue-number";
              description
                "List of queues in the associated queue-group.";
              leaf queue-number {
                type uint32;
                mandatory true;
                description
                  "The queue-number for this queue. The priority and weight for this queue are determined via 
                             the mapping of queue-number to tap-point number (typically 1:1) from the associated scheduler-profile
                             of the parent scheduler-instance.";
              }
    
              leaf congestion-avoidance-profile {
                type congestion-avoidance-profile-ref;
                description
                  "Optional congestion avoidance algorithm for this queue.";
              }
    
              uses eqos-parameters-group;
            }  // list queue
          }  // list queue-group-profile
    
          list scheduler-profile {
            key "name";
            description
              "Scheduler profile associated with queue-group.";
            leaf name {
              type string;
              description
                "Name for the profile.";
            }
    
            leaf tap-point-count {
              type uint32;
              description
                "The number of tap-points in corresponding scheduler-instances that queues
                         or child schedulers can uniquely use to attach to the scheduler.";
            }
    
            leaf scheduling-algorithm {
              type enumeration {
                enum "sp" {
                  value 0;
                  description "Strict priority.";
                }
                enum "rr" {
                  value 1;
                  description "Round-robin.";
                }
                enum "wrr" {
                  value 2;
                  description
                    "Weighted round-robin.";
                }
                enum "wfq" {
                  value 3;
                  description
                    "Weighted fair queueing.";
                }
                enum "wdrr" {
                  value 4;
                  description
                    "Weighted deficit round-robin.";
                }
              }
              description
                "The scheduling algorithm used to service the tap-points of
                         the scheduler instances.";
            }
    
            uses eqos-parameters-group;
    
            leaf cir-policy {
              type enumeration {
                enum "auto-adjust-disabled" {
                  value 0;
                  description
                    "cir-policy of auto-adjust-disabled determines that cir (not cir-percent) is used for the scheduler instance associated
                                with this scheduler-profile and also the child queues/scheduler-instances use cir.";
                }
                enum "cir-as-percent" {
                  value 1;
                  description
                    "cir-policy of cir-as-percent determines that cir in percentage values are used for the scheduler instance associated
                                with this scheduler-profile and also the child queues/scheduler-instances use cir-percent.";
                }
                enum "child-cir-as-percent" {
                  value 2;
                  description
                    "cir-policy of child-cir-as-percent determines that cir (not cir-percent) is used for the scheduler instance associated
                                with this scheduler-profile, but cir in percentage values are used for the child queues/scheduler-instances.";
                }
                enum "child-cir-sum" {
                  value 3;
                  description
                    "cir-policy of child-cir-sum determines that cir for the scheduler instance associated
                                with this scheduler-profile is calculated based on the sum of cir of the child queues/scheduler-instances.";
                }
              }
              description
                "cir-policy is used for the scheduler instance.";
            }
    
            leaf eir-policy {
              type enumeration {
                enum "auto-adjust-disabled" {
                  value 0;
                  description
                    "eir-policy of auto-adjust-disabled determines that eir (not eir-percent) is used for the scheduler instance associated
                                with this scheduler-profile and also the child queues/scheduler-instances use eir.";
                }
                enum "eir-as-percent" {
                  value 1;
                  description
                    "eir-policy of eir-as-percent determines that eir in percentage values are used for the scheduler instance associated
                                with this scheduler-profile and also the child queues/scheduler-instances use eir-percent.";
                }
                enum "child-eir-as-percent" {
                  value 2;
                  description
                    "eir-policy of child-eir-as-percent determines that eir (not eir-percent) is used for the scheduler instance associated
                                with this scheduler-profile, but eir in percentage values are used for the child queues/scheduler-instances.";
                }
              }
              description
                "eir-policy is used for the scheduler instance.";
            }
    
            list tap-point {
              key "number";
              description
                "Defines priority and weight for each tap-point of the associated scheduler instances.
                         Either Queues or Schedulers map to the tap points and their priority and weight is obtained
                         from this tap-point configuration.";
              leaf number {
                type uint32;
                description
                  "tap-point identifier within a scheduler-instance";
              }
    
              leaf priority {
                type uint32;
                description
                  "Priority of this tap-point relative to other tap-points in a scheduler-instance. Used when scheduling algorithm is strict-priority.";
              }
    
              leaf weight {
                type uint32;
                description
                  "Weight of this tap-point relative to other tap-points in a scheduler-instance. Used when scheduling algorithm is 
                        weighted-round-robin, weighted-fair-queuing, weighted-deficit-round-robin.";
              }
            }  // list tap-point
          }  // list scheduler-profile
    
          list queue-group {
            key "name";
            description
              "The queue-group is an instance of a group of queues as described by the associated queue-group-profile. The queue-group
                     instance has a parent scheduler instance which is part of a scheduling hierarchy rooted to a port.
                     Additionally, the queue-group instance may be mapped to both directly (e.g. from flow-points) and indirectly via the
                     queue-group-indirection (e.g. via MPLS PWs/MPLS Tunnels).";
            leaf name {
              type string;
              description
                "Name for the queue group instance.";
            }
    
            leaf queue-group-profile {
              type queue-group-profile-ref;
              mandatory true;
              description
                "The queue-group-profile describing the attributes of this queue-group instance.";
            }
    
            leaf instance-id {
              type uint32;
              description
                "Identifier for the scheduler-instance.";
            }
    
            leaf queue-group-indirection {
              type queue-group-indirection-ref;
              description
                "The queue-group-indirection that this queue-group instance is assigned to. Multiple different queue-groups
                         on different ports can be assigned to the same queue-group-indirection.";
            }
    
            leaf parent-scheduler {
              type scheduler-ref;
              mandatory true;
              description
                "The parent-scheduler instance for this queue group.";
            }
          }  // list queue-group
    
          list scheduler {
            key "name";
            description
              "The scheduler is an instance of a scheduler as described by the associated scheduler-profile. The scheduler
                     instance itself has either a parent scheduler instance which is part of a scheduling hierarchy rooted to a port or
                     the root port itself.";
            leaf name {
              type string;
              description
                "Name for the scheduler instance.";
            }
    
            leaf scheduler-profile {
              type scheduler-profile-ref;
              mandatory true;
              description
                "The scheduler-profile describing the attributes of this scheduler instance.";
            }
    
            leaf instance-id {
              type uint32;
              description
                "Identifier for the scheduler-instance.";
            }
    
            leaf parent-scheduler {
              type scheduler-ref;
              description
                "Optional reference to parent-scheduler instance if this scheduler instance is not the root scheduler instance
                         in the egress QoS hierarchy of a port.";
            }
    
            leaf parent-tap-point {
              type uint32;
              description
                "The tap point that this scheduler instance in a parent scheduler-instance. Determines the priority and weight
                         for this scheduler instance relative to its parent from the scheduler-profile.";
            }
    
            leaf parent-port {
              type mef-logical-port:logical-port-ref;
              description
                "Optional reference to a logical-port if this scheduler instance is the root scheduler instance
                         in the egress QoS hierarchy of a port.";
            }
          }  // list scheduler
    
          list queue-group-indirection {
            key "name";
            description
              "This is an indirected identification of a queue group that would be used by entities
                     which do not resolve directly to the root of the egress-qos hierarchy (a port).
                     An example of this is an MPLS PW which maps to a queue-group-indirection for service-based queuing and scheduling.
                     Dependent on the state of the underlying transport (e.g. MPLS Tunnels to next-hops to port), the actual queue-group instance
                     being used may change dynamically, however the queue-group-indirection allows.";
            leaf name {
              type string;
              description
                "Name for the queue group indirection.";
            }
    
            leaf indirection-id {
              type uint32;
              description
                "Identifier for the queue group indirection.";
            }
          }  // list queue-group-indirection
        }  // container egress-qos
      }  // module ciena-mef-egress-qos
    

© 2023 YumaWorks, Inc. All rights reserved.