huawei-qos-board

Quality of service for board.

  • Version: 2020-06-11

    huawei-qos-board@2020-06-11


    
      module huawei-qos-board {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-qos-board";
    
        prefix qos-board;
    
        import huawei-extension {
          prefix ext;
        }
        import huawei-devm {
          prefix devm;
        }
        import huawei-devm-vnf {
          prefix devm-vnf;
        }
        import huawei-license {
          prefix lcs;
        }
        import huawei-qos {
          prefix qos;
        }
    
        organization
          "Huawei Technologies Co., Ltd.";
    
        contact
          "Huawei Industrial Base
         Bantian, Longgang
         Shenzhen 518129
         People's Republic of China
         Website: http://www.huawei.com
         Email: support@huawei.com";
    
        description
          "Quality of service for board.";
    
        revision "2020-06-11" {
          description
            "Modify descriptions and add units.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-05-07" {
          description
            "Modify descriptions and add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-28" {
          description
            "Modify descriptions and add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-11-05" {
          description
            "Add pq-schedule-prioritys, pq-schedule-priority-on-cards and multicast-port-queues.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-09-20" {
          description "Add new nodes.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-04-06" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "qos";
    
        typedef policy-match-type {
          type enumeration {
            enum "ip-layer-push" {
              value 0;
              description
                "MF traffic classification based only on IP Layer (Layer 3) information for incoming traffic on the public network.";
            }
            enum "ip-layer-pop" {
              value 7;
              description
                "MF traffic classification based only on IP Layer (Layer 3) information for outgoing traffic on the public network.";
            }
            enum "mpls-layer-push" {
              value 3;
              description
                "MF classification based on both IP and MPLS information for incoming traffic on the public network.";
            }
            enum "mpls-layer-pop" {
              value 6;
              description
                "MF classification based on both IP and MPLS information for outgoing traffic on the public network.";
            }
            enum "mpls-layer-l2-inbound" {
              value 4;
              description
                "MF traffic classification based on MPLS information for outgoing traffic on the public network in Layer 2 forwarding scenarios.";
            }
            enum "ipv6-address-rule-mask" {
              value 1;
              description
                "MF traffic classification based on the mask of IPv6 address.";
            }
            enum "protocol-mc-reserved" {
              value 2;
              description
                "Match Layer 3 protocol packets with reserved multicast addresses against ACLs.";
            }
            enum "rule-packet" {
              value 5;
              description
                "Enable packet type-based filtering for MF classification.";
            }
          }
          description "Policy math type.";
        }
    
        typedef pq-schedule-priority-type {
          type enumeration {
            enum "high" {
              value 0;
              description "High.";
            }
            enum "low" {
              value 1;
              description "Low.";
            }
          }
          description
            "PQ schedule priority mode.";
        }
    
        typedef channel-alarm-type {
          type enumeration {
            enum "bandwidth" {
              value 1;
              description "Bandwidth.";
            }
            enum "quantity" {
              value 0;
              description "Quantity.";
            }
          }
          description "Channel alarm type.";
        }
    
        typedef channel-alarm-pool-type {
          type enumeration {
            enum "pool-0" {
              value 1;
              description "Pool 0.";
            }
            enum "pool-1" {
              value 2;
              description "Pool 1.";
            }
          }
          description "Pool ID.";
        }
    
        typedef channel-profile-precision-type {
          type enumeration {
            enum "up" {
              value 1;
              description "Up.";
            }
            enum "down" {
              value 2;
              description "Down.";
            }
          }
          description "Precision type.";
        }
    
        typedef multicast-priority-type {
          type enumeration {
            enum "both" {
              value 2;
              description "Both.";
            }
            enum "high" {
              value 1;
              description "High.";
            }
            enum "low" {
              value 0;
              description "Low.";
            }
          }
          description "Multicast priority type.";
        }
    
        typedef match-type {
          type enumeration {
            enum "destination-user" {
              value 1;
              description "Destination user.";
            }
            enum "interface-acl" {
              value 2;
              description "Interface ACL.";
            }
          }
          description "Match type.";
        }
    
        typedef limit-type {
          type enumeration {
            enum "unlimited" {
              value 1;
              description "Unlimited bandwidth.";
            }
            enum "limited" {
              value 0;
              description "Limited bandwidth.";
            }
          }
          description "Is bandwidth limited.";
        }
    
        typedef switch-flag {
          type enumeration {
            enum "enable" {
              value 0;
              description "Enable.";
            }
            enum "disable" {
              value 1;
              description "Disable.";
            }
          }
          description "Switch flag.";
        }
    
        augment /devm-vnf:devm-vnf/devm-vnf:vnf-boards/devm-vnf:vnf-board {
          description
            "Adds QoS configuration to the vnf board.";
          container qos {
            description
              "Configure QoS application.";
            container traffic-policy-matchs {
              description
                "List of traffic policy match.";
              list traffic-policy-match {
                key "type";
                max-elements 3;
                description
                  "Configure traffic policy match. Some boards do not support this object.";
                leaf type {
                  type policy-match-type;
                  description
                    "Traffic policy match type.";
                }
              }  // list traffic-policy-match
            }  // container traffic-policy-matchs
    
            container traffic-policy-match-type {
              description
                "Configure policy UCL rule match.";
              container destination-user {
                presence
                  "create destination-user";
                description
                  "Enable/disable traffic policy match type destination user.";
              }  // container destination-user
    
              container interface-acl {
                presence "create interface-acl";
                description
                  "Enable/disable traffic policy match type interface acl.";
              }  // container interface-acl
            }  // container traffic-policy-match-type
          }  // container qos
        }
    
        augment /devm:devm/devm:mpu-boards/devm:mpu-board {
          description
            "Adds QoS configuration to the board.";
          container qos {
            description
              "Configure QoS application.";
            container traffic-policy-matchs {
              description
                "List of traffic policy match.";
              list traffic-policy-match {
                must
                  "(((type='ip-layer-push' or type='ip-layer-pop' or type='rule-packet') and not(../traffic-policy-match[type='mpls-layer-push']) and not(../traffic-policy-match[type='mpls-layer-pop'])) or ((type='mpls-layer-push' or type='mpls-layer-pop') and not(../traffic-policy-match[type='ip-layer-push']) and not(../traffic-policy-match[type='ip-layer-pop']) and not(../traffic-policy-match[type='rule-packet'])) or (type='mpls-layer-l2-inbound' or type='protocol-mc-reserved'))";
                key "type";
                max-elements 5;
                description
                  "Configure traffic policy match. Some boards do not support this object.";
                leaf type {
                  type policy-match-type;
                  description
                    "Traffic policy match type.";
                }
              }  // list traffic-policy-match
            }  // container traffic-policy-matchs
    
            container pq-schedule-prioritys {
              description
                "List of PQ schedule priority.";
              list pq-schedule-priority {
                ext:generated-by "system" {
                  description "The all instances are generated automatically.";
                }
                ext:operation-exclude "create" {
                  description "The all instances cannot be created.";
                }
                key "direction";
                max-elements 2;
                description
                  "Configure PQ schedule priority.";
                leaf direction {
                  type qos:qos-direction-type;
                  description "Direction.";
                }
    
                leaf mode {
                  type pq-schedule-priority-type;
                  mandatory true;
                  description
                    "PQ schedule mode.";
                }
              }  // list pq-schedule-priority
            }  // container pq-schedule-prioritys
    
            container pq-schedule-priority-on-cards {
              description
                "List of PQ schedule priority.";
              list pq-schedule-priority-on-card {
                key "card-id";
                description
                  "Configure PQ schedule priority. This configuration takes effect only on eTM subcards.";
                leaf card-id {
                  type string {
                    length "1..31";
                  }
                  description "Card ID.";
                }
    
                leaf mode {
                  type pq-schedule-priority-type;
                  mandatory true;
                  description
                    "PQ schedule priority mode.";
                }
              }  // list pq-schedule-priority-on-card
            }  // container pq-schedule-priority-on-cards
    
            container multicast-port-queues {
              description
                "List of port queue schedule in outbound direction on the MTunnel interface of the distributed multicast VPN.";
              list multicast-port-queue {
                ext:generated-by "system" {
                  description "The all instances are generated automatically.";
                }
                ext:operation-exclude "create" {
                  description "The all instances cannot be created.";
                }
                key "service-class";
                max-elements 8;
                description
                  "Configure port queue schedule in outbound direction on the MTunnel interface of the distributed multicast VPN.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf queue-schedule-mode {
                  type qos:queue-schedule-mode;
                  mandatory true;
                  description "Schedule Mode.";
                }
    
                leaf weight {
                  when
                    "../queue-schedule-mode='wfq'";
                  type uint8 {
                    range "1..100";
                  }
                  mandatory true;
                  description
                    "Weight of wfq scheduling strategy.";
                }
    
                choice shaping-parameters {
                  description
                    "Specify shaping parameters.";
                  case shaping {
                    description
                      "Specify shaping parameters choice case as shaping value.";
                    leaf shaping-value {
                      type uint32 {
                        range "0..4294967294";
                      }
                      units "Mbit/s";
                      description
                        "Shaping value.";
                    }
                  }  // case shaping
    
                  case shaping-percent {
                    description
                      "Specify shaping parameters choice case as shaping percentage value.";
                    leaf shaping-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      description
                        "Shaping percentage.";
                    }
                  }  // case shaping-percent
                }  // choice shaping-parameters
    
                leaf port-wred-name {
                  type leafref {
                    path "/qos:qos/qos:wred-template/qos:port-wreds/qos:port-wred/qos:name";
                  }
                  description "Port wred name.";
                }
              }  // list multicast-port-queue
            }  // container multicast-port-queues
    
            container multicast-port-shaping {
              description
                "Configure a peak rate at which the MTunnel interface in the distributed multicast VPN can send data.";
              choice shaping-parameters {
                description
                  "Specify shaping parameters.";
                case shaping-type-mode {
                  description
                    "Specify shaping parameters choice case as shaping type.";
                  leaf shaping-type {
                    type qos:shaping-value-type;
                    description
                      "Shaping value type.";
                  }
                }  // case shaping-type-mode
    
                case shaping-value-mode {
                  description
                    "Specify shaping parameters choice case as shaping value.";
                  leaf shaping-value {
                    type uint32 {
                      range "1..4294967294";
                    }
                    units "Mbit/s";
                    description "Shaping value.";
                  }
                }  // case shaping-value-mode
              }  // choice shaping-parameters
            }  // container multicast-port-shaping
    
            container user-queue-pir-precision {
              ext:generated-by "system";
              ext:operation-exclude "create";
              presence
                "create user-queue-pir-precision";
              description
                "Enable/disable user queue pir precision.";
              leaf precision {
                type uint8 {
                  range "1..100";
                }
                units "%";
                default "1";
                description "Precision.";
              }
            }  // container user-queue-pir-precision
    
            container exp-phb-disable {
              description
                "Configure disable the private network tag priority in a DS domain from being marked for the downstream traffic on the PW interface in the VLL networking.";
              leaf forward-type {
                type qos:forward-type;
                description "Forward type.";
              }
            }  // container exp-phb-disable
    
            container packet-block-thresholds {
              description
                "List of the packet block threshold size.";
              list packet-block-threshold {
                key "service-class";
                description
                  "Configure the packet block threshold size.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf size {
                  type uint8 {
                    range "0..5";
                  }
                  units "kB";
                  mandatory true;
                  description
                    "The packet block threshold size.";
                }
              }  // list packet-block-threshold
            }  // container packet-block-thresholds
    
            container packet-block-threshold-all {
              description
                "Configure the packet block threshold size for all queues.";
              leaf size {
                type uint8 {
                  range "0..5";
                }
                units "kB";
                description
                  "The packet block threshold size.";
              }
            }  // container packet-block-threshold-all
    
            container channel-alarms {
              description
                "List of channel alarm.";
              list channel-alarm {
                key "alarm-type pool";
                description
                  "Configure channel alarm.";
                leaf alarm-type {
                  type channel-alarm-type;
                  description "Alarm type.";
                }
    
                leaf pool {
                  type channel-alarm-pool-type;
                  description "Pool.";
                }
    
                leaf threshold {
                  type uint8 {
                    range "1..100";
                  }
                  units "%";
                  mandatory true;
                  description "Threshold value.";
                }
              }  // list channel-alarm
            }  // container channel-alarms
    
            container channel-profile-precision {
              description
                "Configure the bandwidth allocation mode.";
              leaf type {
                type channel-profile-precision-type;
                description "Precision type.";
              }
            }  // container channel-profile-precision
    
            container channel-profile-apply {
              description
                "Configure a channel profile to a board. Apply channel profile template may affect scheduling. The configuration will work after the board restart.";
              leaf name {
                type leafref {
                  path "/qos:qos/qos:queue-scheduler-template/qos:channel-profiles/qos:channel-profile/qos:name";
                }
                must
                  "/qos:qos/qos:queue-scheduler-template/qos:channel-profiles/qos:channel-profile[qos:name=current()]/qos:channel-paras/qos:channel-para";
                description
                  "Channel profile name.";
              }
            }  // container channel-profile-apply
    
            container multicast-shaping {
              description
                "Configure an upper rate limit for multicast traffic on a specified board.";
              leaf shaping-value {
                type uint32 {
                  range "1..1000000";
                }
                units "pps";
                description "Shaping value.";
              }
            }  // container multicast-shaping
    
            container port-queue-alarms {
              description
                "List of port queue buffer alarm.";
              list port-queue-alarm {
                key "service-class";
                max-elements 8;
                description
                  "Configure port queue buffer alarm.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf buffer-percentage {
                  type uint8 {
                    range "0..100";
                  }
                  units "%";
                  mandatory true;
                  description
                    "Buffer percentage.";
                }
              }  // list port-queue-alarm
            }  // container port-queue-alarms
    
            container user-queue-recovery-disable {
              presence
                "create user-queue-recovery-disable";
              description
                "Enable/disable automatic switchback from CAR to user queue.";
            }  // container user-queue-recovery-disable
    
            container access-user-board-schedule-enable {
              presence
                "create access-user-board-schedule-enable";
              description
                "Enable/disable downstream HQoS scheduling.";
            }  // container access-user-board-schedule-enable
    
            container convergent-precedence-highs {
              description
                "List of configuration specific low-priority queues on a board as high-priority queues.";
              list convergent-precedence-high {
                key "service-class-value";
                max-elements 5;
                description
                  "Configure specific low-priority queues on a board as high-priority queues.";
                leaf service-class-value {
                  type uint8 {
                    range "0..4";
                  }
                  description
                    "The value of service class.";
                }
              }  // list convergent-precedence-high
            }  // container convergent-precedence-highs
    
            container queue-discard-alarms {
              description
                "List of queue discard alarm.";
              list queue-discard-alarm {
                key "service-class";
                max-elements 8;
                description
                  "Configure queue discard alarm.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                choice discard-type {
                  mandatory true;
                  description
                    "Specify discard type.";
                  case bytes {
                    description
                      "Specify discard type choice case as discard-byte.";
                    leaf bytes {
                      type uint32 {
                        range "1..4294967295";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "The discarded bytes.";
                    }
                  }  // case bytes
    
                  case packets {
                    description
                      "Specify discard type choice case as discard packet.";
                    leaf packets {
                      type uint32 {
                        range "1..4294967295";
                      }
                      units "packet";
                      mandatory true;
                      description
                        "The discarded packets.";
                    }
                  }  // case packets
    
                  case packet-ratio {
                    description
                      "Specify discard type choice case as discard packet ratio.";
                    leaf packet-coefficient {
                      type uint8 {
                        range "1..9";
                      }
                      mandatory true;
                      description
                        "Ratio coefficient of the discard packets.";
                    }
    
                    leaf packet-exponent {
                      type uint8 {
                        range "1..5";
                      }
                      mandatory true;
                      description
                        "Ratio exponent of the discard packets.";
                    }
                  }  // case packet-ratio
                }  // choice discard-type
    
                leaf interval-time {
                  type uint16 {
                    range "15..3600";
                  }
                  units "s";
                  default "30";
                  description
                    "Monitoring time of the queue discard alarm.";
                }
              }  // list queue-discard-alarm
            }  // container queue-discard-alarms
    
            container user-queue-burst {
              presence "create user-queue-burst";
              description
                "Enable/disable the minimum default burst size and time on a board.";
              leaf minimum-burst-size {
                type uint32 {
                  range "1000..1000000";
                }
                units "Byte";
                mandatory true;
                description
                  "Specifies a minimum default burst size.";
              }
    
              leaf time {
                type uint32 {
                  range "100..100000";
                }
                units "us";
                mandatory true;
                description
                  "Specifies a burst time.";
              }
            }  // container user-queue-burst
    
            container burst-sizes {
              description
                "List of the burst size.";
              list burst-size {
                key "service-class";
                max-elements 8;
                description
                  "Configure the burst size of a chip.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf value {
                  type uint8 {
                    range "0..64";
                  }
                  mandatory true;
                  description "Burst size.";
                }
              }  // list burst-size
            }  // container burst-sizes
    
            container global-buffer-share-thresholds {
              description
                "List of the global shared threshold of buffer resources.";
              list global-buffer-share-threshold {
                key "direction";
                description
                  "Configure the global shared threshold of buffer resources.";
                leaf direction {
                  type qos:qos-direction-type;
                  description "Direction.";
                }
    
                leaf threshold {
                  type uint16 {
                    range "1..500";
                  }
                  mandatory true;
                  description
                    "Specifies the shared threshold value.";
                }
              }  // list global-buffer-share-threshold
            }  // container global-buffer-share-thresholds
    
            container global-buffer-share-queues {
              description
                "List of the shared threshold of buffer resources for specific queues.";
              list global-buffer-share-queue {
                key "service-class direction";
                description
                  "Configure the shared threshold of buffer resources for specific queues.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf direction {
                  type qos:qos-direction-type;
                  description "Direction.";
                }
              }  // list global-buffer-share-queue
            }  // container global-buffer-share-queues
    
            container flow-queue-backpressure-off {
              presence
                "create flow-queue-backpressure-off";
              description
                "Enable/disable the PIR backpressure function. When the configuration exists, the function is disable.";
            }  // container flow-queue-backpressure-off
    
            container traffic-policy-match-type {
              description
                "Configure policy UCL rule match.";
              container destination-user {
                presence
                  "create destination-user";
                description
                  "Enable/disable traffic policy match type destination user.";
              }  // container destination-user
    
              container interface-acl {
                presence "create interface-acl";
                description
                  "Enable/disable traffic policy match type interface acl.";
              }  // container interface-acl
            }  // container traffic-policy-match-type
    
            container user-queue-resource-4cos {
              description
                "Configure 4queue CoS size.";
              leaf cos-value {
                type uint32 {
                  range "4..64000";
                }
                must "../cos-value mod 4 = 0";
                description "Cos value.";
              }
            }  // container user-queue-resource-4cos
    
            container user-queue-resource-8cos-enhances {
              description
                "List of 8queue CoS size configuration.";
              list user-queue-resource-8cos-enhance {
                key "direction";
                max-elements 2;
                description
                  "Configure 8queue CoS size.";
                leaf direction {
                  type qos:qos-direction-type;
                  description "Direction.";
                }
    
                leaf cos-value {
                  type uint32 {
                    range "4..15000";
                  }
                  must "../cos-value mod 4 = 0";
                  mandatory true;
                  description "CoS value.";
                }
              }  // list user-queue-resource-8cos-enhance
            }  // container user-queue-resource-8cos-enhances
          }  // container qos
        }
    
        augment /devm:devm/devm:lpu-boards/devm:lpu-board {
          description
            "Adds QoS configuration to the board.";
          container qos {
            description
              "Configure QoS application.";
            container traffic-policy-matchs {
              description
                "List of traffic policy match.";
              list traffic-policy-match {
                key "type";
                max-elements 6;
                description
                  "Configure traffic policy match. Some boards do not support this object.";
                leaf type {
                  type policy-match-type;
                  description
                    "Traffic policy match type.";
                }
              }  // list traffic-policy-match
            }  // container traffic-policy-matchs
    
            container pq-schedule-prioritys {
              description
                "List of PQ schedule priority.";
              list pq-schedule-priority {
                ext:generated-by "system" {
                  description "The all instances are generated automatically.";
                }
                ext:operation-exclude "create" {
                  description "The all instances cannot be created.";
                }
                key "direction";
                max-elements 2;
                description
                  "Configure PQ schedule priority.";
                leaf direction {
                  type qos:qos-direction-type;
                  description "Direction.";
                }
    
                leaf mode {
                  type pq-schedule-priority-type;
                  mandatory true;
                  description
                    "PQ schedule mode.";
                }
              }  // list pq-schedule-priority
            }  // container pq-schedule-prioritys
    
            container pq-schedule-priority-on-cards {
              description
                "List of PQ schedule priority.";
              list pq-schedule-priority-on-card {
                key "card-id";
                description
                  "Configure PQ schedule priority. This configuration takes effect only on eTM subcards.";
                leaf card-id {
                  type string {
                    length "1..31";
                  }
                  description "Card ID.";
                }
    
                leaf mode {
                  type pq-schedule-priority-type;
                  mandatory true;
                  description
                    "PQ schedule priority mode.";
                }
              }  // list pq-schedule-priority-on-card
            }  // container pq-schedule-priority-on-cards
    
            container multicast-port-queues {
              description
                "List of port queue schedule in outbound direction on the MTunnel interface of the distributed multicast VPN.";
              list multicast-port-queue {
                ext:generated-by "system" {
                  description "The all instances are generated automatically.";
                }
                ext:operation-exclude "create" {
                  description "The all instances cannot be created.";
                }
                key "service-class";
                max-elements 8;
                description
                  "Configure port queue schedule in outbound direction on the MTunnel interface of the distributed multicast VPN.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf queue-schedule-mode {
                  type qos:queue-schedule-mode;
                  mandatory true;
                  description "Schedule Mode.";
                }
    
                leaf weight {
                  when
                    "../queue-schedule-mode='wfq'";
                  type uint8 {
                    range "1..100";
                  }
                  mandatory true;
                  description
                    "Weight of wfq scheduling strategy.";
                }
    
                choice shaping-parameters {
                  description
                    "Specify shaping parameters.";
                  case shaping {
                    description
                      "Specify shaping parameters choice case as shaping value.";
                    leaf shaping-value {
                      type uint32 {
                        range "0..4294967294";
                      }
                      units "Mbit/s";
                      description
                        "Shaping value.";
                    }
                  }  // case shaping
    
                  case shaping-percent {
                    description
                      "Specify shaping parameters choice case as shaping percentage value.";
                    leaf shaping-percentage {
                      type uint8 {
                        range "0..100";
                      }
                      units "%";
                      description
                        "Shaping percentage.";
                    }
                  }  // case shaping-percent
                }  // choice shaping-parameters
    
                leaf port-wred-name {
                  type leafref {
                    path "/qos:qos/qos:wred-template/qos:port-wreds/qos:port-wred/qos:name";
                  }
                  description "Port wred name.";
                }
              }  // list multicast-port-queue
            }  // container multicast-port-queues
    
            container multicast-port-shaping {
              description
                "Configure a peak rate at which the MTunnel interface in the distributed multicast VPN can send data.";
              choice shaping-parameters {
                description
                  "Specify shaping parameters.";
                case shaping-type-mode {
                  description
                    "Specify shaping parameters choice case as shaping type.";
                  leaf shaping-type {
                    type qos:shaping-value-type;
                    description
                      "Shaping value type.";
                  }
                }  // case shaping-type-mode
    
                case shaping-value-mode {
                  description
                    "Specify shaping parameters choice case as shaping value.";
                  leaf shaping-value {
                    type uint32 {
                      range "1..4294967294";
                    }
                    units "Mbit/s";
                    description "Shaping value.";
                  }
                }  // case shaping-value-mode
              }  // choice shaping-parameters
            }  // container multicast-port-shaping
    
            container user-queue-pir-precision {
              ext:generated-by "system";
              ext:operation-exclude "create";
              presence
                "create user-queue-pir-precision";
              description
                "Enable/disable user queue pir precision.";
              leaf precision {
                type uint8 {
                  range "1..100";
                }
                units "%";
                default "1";
                description "Precision.";
              }
            }  // container user-queue-pir-precision
    
            container exp-phb-disable {
              description
                "Configure disable the private network tag priority in a DS domain from being marked for the downstream traffic on the PW interface in the VLL networking.";
              leaf forward-type {
                type qos:forward-type;
                description "Forward type.";
              }
            }  // container exp-phb-disable
    
            container packet-block-thresholds {
              description
                "List of the packet block threshold size.";
              list packet-block-threshold {
                key "service-class";
                description
                  "Configure the packet block threshold size.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf size {
                  type uint8 {
                    range "0..5";
                  }
                  units "kB";
                  mandatory true;
                  description
                    "The packet block threshold size.";
                }
              }  // list packet-block-threshold
            }  // container packet-block-thresholds
    
            container packet-block-threshold-all {
              description
                "Configure the packet block threshold size for all queues.";
              leaf size {
                type uint8 {
                  range "0..5";
                }
                units "kB";
                description
                  "The packet block threshold size.";
              }
            }  // container packet-block-threshold-all
    
            container channel-alarms {
              description
                "List of channel alarm.";
              list channel-alarm {
                key "alarm-type pool";
                description
                  "Configure channel alarm.";
                leaf alarm-type {
                  type channel-alarm-type;
                  description "Alarm type.";
                }
    
                leaf pool {
                  type channel-alarm-pool-type;
                  description "Pool.";
                }
    
                leaf threshold {
                  type uint8 {
                    range "1..100";
                  }
                  units "%";
                  mandatory true;
                  description "Threshold value.";
                }
              }  // list channel-alarm
            }  // container channel-alarms
    
            container channel-profile-precision {
              description
                "Configure the bandwidth allocation mode.";
              leaf type {
                type channel-profile-precision-type;
                description "Precision type.";
              }
            }  // container channel-profile-precision
    
            container channel-profile-apply {
              description
                "Configure a channel profile to a board. Apply channel profile template may affect scheduling. The configuration will work after the board restart.";
              leaf name {
                type leafref {
                  path "/qos:qos/qos:queue-scheduler-template/qos:channel-profiles/qos:channel-profile/qos:name";
                }
                must
                  "/qos:qos/qos:queue-scheduler-template/qos:channel-profiles/qos:channel-profile[qos:name=current()]/qos:channel-paras/qos:channel-para";
                description
                  "Channel profile name.";
              }
            }  // container channel-profile-apply
    
            container channel-auto-adjust-switch {
              description
                "Configure channel auto adjust quantity. The configuration will work after the board restart. Only some boards support this function.";
              leaf auto-adjust-quantity {
                type switch-flag;
                default "enable";
                description
                  "Auto adjust quantity.";
              }
            }  // container channel-auto-adjust-switch
    
            container fabric-queue-statistic-enable {
              description
                "Configure enable the statistics function for Virtual Output Queues.";
              leaf enable {
                type empty;
                description "Enable.";
              }
            }  // container fabric-queue-statistic-enable
    
            container over-ride-adjust-number {
              description
                "Configure over ride adjust number.";
              leaf adjust-number {
                type uint16 {
                  range "1..1000";
                }
                default "50";
                description
                  "Adjust number value.";
              }
            }  // container over-ride-adjust-number
    
            container over-ride-degrade-cycle {
              description
                "Configure over ride degrade cycle.";
              leaf degrade-cycle {
                type uint8 {
                  range "1..255";
                }
                default "64";
                description "Cycle number.";
              }
            }  // container over-ride-degrade-cycle
    
            container over-ride-upgrade-cycle {
              description
                "Configure over ride upgrade cycle.";
              leaf upgrade-cycle {
                type uint8 {
                  range "1..255";
                }
                default "1";
                description "Cycle number.";
              }
            }  // container over-ride-upgrade-cycle
    
            container over-ride-switch {
              must
                "./enable-percent>=./disable-percent";
              description
                "Configure over ride switch.";
              leaf disable-percent {
                type uint8 {
                  range "0..100";
                }
                units "%";
                default "50";
                description
                  "Disable percent value.";
              }
    
              leaf enable-percent {
                type uint8 {
                  range "0..100";
                }
                units "%";
                default "80";
                description
                  "Enable percent value.";
              }
            }  // container over-ride-switch
    
            container over-ride-inbound-threshold-adjust {
              must
                "./upgrade-threshold>./degrade-threshold";
              description
                "Configure over ride inbound threshold adjust.";
              leaf upgrade-threshold {
                type uint8 {
                  range "2..99";
                }
                default "90";
                description
                  "Inbound upgrade threshold.";
              }
    
              leaf degrade-threshold {
                type uint8 {
                  range "1..98";
                }
                default "60";
                description
                  "Inbound degrade threshold.";
              }
            }  // container over-ride-inbound-threshold-adjust
    
            container over-ride-outbound-threshold-adjust {
              must
                "./upgrade-threshold>./degrade-threshold";
              description
                "Configure over ride outbound threshold adjust.";
              leaf upgrade-threshold {
                type uint8 {
                  range "2..99";
                }
                default "80";
                description
                  "Outbound upgrade threshold.";
              }
    
              leaf degrade-threshold {
                type uint8 {
                  range "1..98";
                }
                default "60";
                description
                  "Outbound degrade threshold.";
              }
            }  // container over-ride-outbound-threshold-adjust
    
            container over-ride-monitor-number {
              description
                "Configure over ride monitor.";
              leaf monitor-number {
                type uint8 {
                  range "1..64";
                }
                default "32";
                description "Monitor number.";
              }
            }  // container over-ride-monitor-number
    
            container over-ride-enable-switch {
              description
                "Configure over ride switch.";
              leaf outbound {
                type empty;
                description
                  "Direction outbound.";
              }
            }  // container over-ride-enable-switch
    
            container over-ride-enable-inbound-switch {
              description
                "Configure over ride switch. Only some boards support this function.";
              leaf inbound {
                type empty;
                description "Direction inbound.";
              }
            }  // container over-ride-enable-inbound-switch
    
            container over-ride-initial-grade {
              description
                "Configure over ride initial grade. Only some boards support this function.";
              leaf grade-id {
                type uint8 {
                  range "1..21";
                }
                default "7";
                description "Grade ID.";
              }
            }  // container over-ride-initial-grade
    
            container multicast-shaping {
              description
                "Configure an upper rate limit for multicast traffic on a specified board.";
              leaf shaping-value {
                type uint32 {
                  range "1..1000000";
                }
                units "pps";
                description "Shaping value.";
              }
            }  // container multicast-shaping
    
            container multicast-shaping-service-template {
              must
                "(all-service-class/service-template-name and (count(specific-service-classs/specific-service-class)=0)) or not(all-service-class/service-template-name)";
              description
                "Configure multicast packet compensation.";
              container all-service-class {
                description
                  "Configure multicast packet compensation for all service class.";
                leaf service-template-name {
                  type leafref {
                    path "/qos:qos/qos:queue-scheduler-template/qos:service-templates/qos:service-template/qos:name";
                  }
                  description
                    "Service template name.";
                }
              }  // container all-service-class
    
              container specific-service-classs {
                description
                  "List of multicast packet compensation for specific service class.";
                list specific-service-class {
                  key "service-class";
                  description
                    "Configure multicast packet compensation for specific service class.";
                  leaf service-class {
                    type qos:qos-service-class;
                    description
                      "Class of service.";
                  }
    
                  leaf service-template-name {
                    type leafref {
                      path "/qos:qos/qos:queue-scheduler-template/qos:service-templates/qos:service-template/qos:name";
                    }
                    mandatory true;
                    description
                      "Service template name.";
                  }
                }  // list specific-service-class
              }  // container specific-service-classs
            }  // container multicast-shaping-service-template
    
            container port-queue-alarms {
              description
                "List of port queue buffer alarm.";
              list port-queue-alarm {
                key "service-class";
                max-elements 8;
                description
                  "Configure port queue buffer alarm.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf buffer-percentage {
                  type uint8 {
                    range "0..100";
                  }
                  units "%";
                  mandatory true;
                  description
                    "Buffer percentage.";
                }
              }  // list port-queue-alarm
            }  // container port-queue-alarms
    
            container user-queue-recovery-disable {
              presence
                "create user-queue-recovery-disable";
              description
                "Enable/disable automatic switchback from CAR to user queue.";
            }  // container user-queue-recovery-disable
    
            container multicast-shapers {
              description
                "List of multicast traffic shaping.";
              list multicast-shaper {
                must
                  "(priority='both' and not(../multicast-shaper[priority='high']) and not(../multicast-shaper[priority='low'])) or ((priority='high' or priority='low') and not(../multicast-shaper[priority='both']))";
                key "priority";
                description
                  "Configure multicast traffic shaping.";
                leaf priority {
                  type multicast-priority-type;
                  description "Priority type.";
                }
    
                leaf shaping-value {
                  type uint32 {
                    range "1..400000";
                  }
                  units "Mbit/s";
                  mandatory true;
                  description "Shaping value.";
                }
              }  // list multicast-shaper
            }  // container multicast-shapers
    
            container access-user-board-schedule-enable {
              presence
                "create access-user-board-schedule-enable";
              description
                "Enable/disable downstream HQoS scheduling.";
            }  // container access-user-board-schedule-enable
    
            container convergent-precedence-highs {
              description
                "List of configuration specific low-priority queues on a board as high-priority queues.";
              list convergent-precedence-high {
                key "service-class-value";
                max-elements 5;
                description
                  "Configure specific low-priority queues on a board as high-priority queues.";
                leaf service-class-value {
                  type uint8 {
                    range "0..4";
                  }
                  description
                    "The value of service class.";
                }
              }  // list convergent-precedence-high
            }  // container convergent-precedence-highs
    
            container queue-discard-alarms {
              description
                "List of queue discard alarm.";
              list queue-discard-alarm {
                key "service-class";
                max-elements 8;
                description
                  "Configure queue discard alarm.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                choice discard-type {
                  mandatory true;
                  description
                    "Specify discard type.";
                  case bytes {
                    description
                      "Specify discard type choice case as discard-byte.";
                    leaf bytes {
                      type uint32 {
                        range "1..4294967295";
                      }
                      units "Byte";
                      mandatory true;
                      description
                        "The discarded bytes.";
                    }
                  }  // case bytes
    
                  case packets {
                    description
                      "Specify discard type choice case as discard packet.";
                    leaf packets {
                      type uint32 {
                        range "1..4294967295";
                      }
                      units "packet";
                      mandatory true;
                      description
                        "The discarded packets.";
                    }
                  }  // case packets
    
                  case packet-ratio {
                    description
                      "Specify discard type choice case as discard packet ratio.";
                    leaf packet-coefficient {
                      type uint8 {
                        range "1..9";
                      }
                      mandatory true;
                      description
                        "Ratio coefficient of the discard packets.";
                    }
    
                    leaf packet-exponent {
                      type uint8 {
                        range "1..5";
                      }
                      mandatory true;
                      description
                        "Ratio exponent of the discard packets.";
                    }
                  }  // case packet-ratio
                }  // choice discard-type
    
                leaf interval-time {
                  type uint16 {
                    range "15..3600";
                  }
                  units "s";
                  default "30";
                  description
                    "Monitoring time of the queue discard alarm.";
                }
              }  // list queue-discard-alarm
            }  // container queue-discard-alarms
    
            container user-queue-burst {
              presence "create user-queue-burst";
              description
                "Enable/disable the minimum default burst size and time on a board.";
              leaf minimum-burst-size {
                type uint32 {
                  range "1000..1000000";
                }
                units "Byte";
                mandatory true;
                description
                  "Specifies a minimum default burst size.";
              }
    
              leaf time {
                type uint32 {
                  range "100..100000";
                }
                units "us";
                mandatory true;
                description
                  "Specifies a burst time.";
              }
            }  // container user-queue-burst
    
            container burst-sizes {
              description
                "List of the burst size.";
              list burst-size {
                key "service-class";
                max-elements 8;
                description
                  "Configure the burst size of a chip.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf value {
                  type uint8 {
                    range "0..64";
                  }
                  mandatory true;
                  description "Burst size.";
                }
              }  // list burst-size
            }  // container burst-sizes
    
            container global-buffer-share-thresholds {
              description
                "List of the global shared threshold of buffer resources.";
              list global-buffer-share-threshold {
                key "direction";
                description
                  "Configure the global shared threshold of buffer resources.";
                leaf direction {
                  type qos:qos-direction-type;
                  description "Direction.";
                }
    
                leaf threshold {
                  type uint16 {
                    range "1..500";
                  }
                  mandatory true;
                  description
                    "Specifies the shared threshold value.";
                }
              }  // list global-buffer-share-threshold
            }  // container global-buffer-share-thresholds
    
            container global-buffer-share-queues {
              description
                "List of the shared threshold of buffer resources for specific queues.";
              list global-buffer-share-queue {
                key "service-class direction";
                description
                  "Configure the shared threshold of buffer resources for specific queues.";
                leaf service-class {
                  type qos:qos-service-class;
                  description
                    "Class of service.";
                }
    
                leaf direction {
                  type qos:qos-direction-type;
                  description "Direction.";
                }
              }  // list global-buffer-share-queue
            }  // container global-buffer-share-queues
    
            container flow-queue-backpressure-off {
              presence
                "create flow-queue-backpressure-off";
              description
                "Enable/disable the PIR backpressure function. When the configuration exists, the function is disable.";
            }  // container flow-queue-backpressure-off
    
            container traffic-policy-match-type {
              description
                "Configure policy UCL rule match.";
              container destination-user {
                presence
                  "create destination-user";
                description
                  "Enable/disable traffic policy match type destination user.";
              }  // container destination-user
    
              container interface-acl {
                presence "create interface-acl";
                description
                  "Enable/disable traffic policy match type interface acl.";
              }  // container interface-acl
            }  // container traffic-policy-match-type
    
            container user-queue-resource-4cos {
              description
                "Configure 4queue CoS size.";
              leaf cos-value {
                type uint32 {
                  range "4..64000";
                }
                must "../cos-value mod 4 = 0";
                description "Cos value.";
              }
            }  // container user-queue-resource-4cos
    
            container user-queue-resource-8cos-enhances {
              description
                "List of 8queue CoS size configuration.";
              list user-queue-resource-8cos-enhance {
                key "direction";
                max-elements 2;
                description
                  "Configure 8queue CoS size.";
                leaf direction {
                  type qos:qos-direction-type;
                  description "Direction.";
                }
    
                leaf cos-value {
                  type uint32 {
                    range "4..15000";
                  }
                  must "../cos-value mod 4 = 0";
                  mandatory true;
                  description "CoS value.";
                }
              }  // list user-queue-resource-8cos-enhance
            }  // container user-queue-resource-8cos-enhances
          }  // container qos
        }
    
        augment /lcs:license {
          description
            "Adds vm bandwidth configuration to license model.";
          container vm-bandwidths {
            description
              "List of configuration to set the bandwidth or set no rate limit for a VM.";
            list vm-bandwidth {
              ext:generated-by "system" {
                description "The all instances are generated automatically.";
              }
              ext:operation-exclude "create" {
                description "The all instances cannot be created.";
              }
              ext:operation-exclude "update" {
                when "not(/lcs:license/lcs:license-items/lcs:license-item[lcs:name='VR9K00BW0'])";
                description "The all instances cannot be updated when license-item 'VR9K00BW0' does not exist.";
              }
              key "vnfc-name slot-id";
              description
                "Configure the bandwidth or configure no rate limit for a VM.";
              leaf vnfc-name {
                type leafref {
                  path
                    "/devm-vnf:devm-vnf/devm-vnf:vnf-boards/devm-vnf:vnf-board/devm-vnf:vnfc-name";
                }
                must "../vnfc-name = 'brasnls'";
                description
                  "Virtualized network function component (VNFC) name.";
              }
    
              leaf slot-id {
                type leafref {
                  path
                    "/devm-vnf:devm-vnf/devm-vnf:vnf-boards/devm-vnf:vnf-board[devm-vnf:vnfc-name=current()/../vnfc-name]/devm-vnf:id";
                }
                description "Slot ID.";
              }
    
              leaf is-bandwidth-limited {
                type limit-type;
                default "limited";
                description
                  "Is bandwidth limited.";
              }
    
              leaf bandwidth {
                when
                  "../is-bandwidth-limited='limited'";
                type uint32 {
                  range "0..1000000";
                }
                units "Mbit/s";
                default "1";
                description "Bandwidth.";
              }
    
              leaf current-bandwidth {
                type uint32;
                units "Mbit/s";
                config false;
                description "Current Bandwidth.";
              }
            }  // list vm-bandwidth
          }  // container vm-bandwidths
        }
      }  // module huawei-qos-board
    

© 2023 YumaWorks, Inc. All rights reserved.