| /* |
| * Copyright 2017-present Open Networking Laboratory |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.onosproject.net.behaviour; |
| |
| import com.google.common.annotations.Beta; |
| import org.onlab.util.Bandwidth; |
| import org.onosproject.net.Annotated; |
| import org.onosproject.net.Description; |
| |
| import java.util.Map; |
| import java.util.Optional; |
| |
| /** |
| * Default implementation of immutable Qos description. |
| */ |
| @Beta |
| public interface QosDescription extends Description, Annotated { |
| |
| /** |
| * Denotes the type of the Qos. |
| */ |
| enum Type { |
| /** |
| * Corresponds to Hierarchy token bucket classifier. |
| */ |
| HTB, |
| |
| /** |
| * Corresponds to Hierarchical Fair Service Curve classifier. |
| */ |
| HFSC, |
| |
| /** |
| * Corresponds to Stochastic Fairness Queueing classifier. |
| */ |
| SFQ, |
| |
| /** |
| * Corresponds to Controlled Delay classifier classifier. |
| */ |
| CODEL, |
| |
| /** |
| * Corresponds to Fair Queuing with Controlled Delay classifier. |
| */ |
| FQ_CODEL, |
| |
| /** |
| * No operation. |
| */ |
| NOOP, |
| |
| /** |
| * DPDK egress policer. |
| */ |
| EGRESS_POLICER |
| } |
| |
| /** |
| * Returns qos identifier. |
| * |
| * @return qos identifier |
| */ |
| QosId qosId(); |
| |
| /** |
| * Returns qos type. |
| * |
| * @return qos type |
| */ |
| Type type(); |
| |
| /** |
| * Returns the max rate of qos, Valid only in specific qos type. |
| * |
| * @return Maximum rate shared by all queued traffic, in bit/s. |
| */ |
| Optional<Bandwidth> maxRate(); |
| |
| /** |
| * Returns Committed Information Rate of Qos, Valid only in specific qos type. |
| * the CIR is measured in bytes of IP packets per second. |
| * |
| * @return cir |
| */ |
| Optional<Long> cir(); |
| |
| /** |
| * Returns Committed Burst Size of Qos, Valid only in specific qos type. |
| * the CBS is measured in bytes and represents a token bucket. |
| * |
| * @return cbs |
| */ |
| Optional<Long> cbs(); |
| |
| /** |
| * Returns map of integer-Queue pairs, Valid only in specific qos type. |
| * |
| * @return queues |
| */ |
| Optional<Map<Long, QueueDescription>> queues(); |
| |
| /** |
| * Builder of qos description entities. |
| */ |
| interface Builder { |
| /** |
| * Returns qos description builder with a given name. |
| * |
| * @param qosId qos identifier |
| * @return bridge description builder |
| */ |
| Builder qosId(QosId qosId); |
| |
| /** |
| * Returns qos description builder with a given type. |
| * |
| * @param type qos type |
| * @return bridge description builder |
| */ |
| Builder type(Type type); |
| |
| /** |
| * Returns qos description builder with given maxRate. |
| * |
| * @param maxRate qos max rate |
| * @return qos description builder |
| */ |
| Builder maxRate(Bandwidth maxRate); |
| |
| /** |
| * Returns qos description builder with a given cir. |
| * @param cir in bytes of IP packets per second |
| * @return qos description builder |
| */ |
| Builder cir(Long cir); |
| |
| /** |
| * Returns qos description builder with a given cbs. |
| * |
| * @param cbs in bytes and represents a token bucket |
| * @return qos description builder |
| */ |
| Builder cbs(Long cbs); |
| |
| /** |
| * Returns qos description builder with a given queues. |
| * |
| * @param queues the map from queue numbers to Queue records |
| * @return qos description builder |
| */ |
| Builder queues(Map<Long, QueueDescription> queues); |
| |
| /** |
| * Builds an immutable qos description. |
| * |
| * @return qos description |
| */ |
| QosDescription build(); |
| } |
| } |