blob: 7c37fb33be4ab95d621af94c2f225d4a25b0e3af [file] [log] [blame]
// Copyright (c) 2018 Open Networking Foundation
//
// 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.
syntax = "proto3";
option go_package = "github.com/opencord/voltha-protos/v4/go/tech_profile";
option java_package = "org.opencord.voltha.tech_profile";
package tech_profile;
import "google/api/annotations.proto";
enum Direction {
UPSTREAM = 0;
DOWNSTREAM = 1;
BIDIRECTIONAL = 2;
}
enum SchedulingPolicy {
WRR = 0;
StrictPriority = 1;
Hybrid = 2;
}
enum AdditionalBW {
AdditionalBW_None = 0;
AdditionalBW_NA = 1;
AdditionalBW_BestEffort = 2;
AdditionalBW_Auto = 3;
}
enum DiscardPolicy {
TailDrop = 0;
WTailDrop = 1;
Red = 2;
WRed = 3;
}
enum InferredAdditionBWIndication {
InferredAdditionBWIndication_None = 0;
InferredAdditionBWIndication_Assured = 1;
InferredAdditionBWIndication_BestEffort = 2;
}
message SchedulerConfig {
Direction direction = 1;
AdditionalBW additional_bw = 2; // Valid on for “direction == Upstream”.
fixed32 priority = 3;
fixed32 weight = 4;
SchedulingPolicy sched_policy = 5;
}
message TrafficShapingInfo {
fixed32 cir = 1;
fixed32 cbs = 2;
fixed32 pir = 3;
fixed32 pbs = 4;
fixed32 gir = 5; // only if “direction == Upstream ”
InferredAdditionBWIndication add_bw_ind = 6; // only if “direction == Upstream”
}
message TrafficScheduler {
Direction direction = 1;
fixed32 alloc_id = 2; // valid only if “direction == Upstream ”
SchedulerConfig scheduler = 3;
TrafficShapingInfo traffic_shaping_info = 4;
fixed32 tech_profile_id = 5;
}
message TrafficSchedulers {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
fixed32 uni_id = 4;
fixed32 port_no = 5;
repeated TrafficScheduler traffic_scheds = 3;
}
message TailDropDiscardConfig {
fixed32 queue_size = 1;
}
message RedDiscardConfig {
fixed32 min_threshold = 1;
fixed32 max_threshold = 2;
fixed32 max_probability = 3;
}
message WRedDiscardConfig {
RedDiscardConfig green = 1;
RedDiscardConfig yellow = 2;
RedDiscardConfig red = 3;
}
message DiscardConfig {
DiscardPolicy discard_policy = 1;
oneof discard_config {
TailDropDiscardConfig tail_drop_discard_config = 2;
RedDiscardConfig red_discard_config = 3;
WRedDiscardConfig wred_discard_config = 4;
}
}
message TrafficQueue {
Direction direction = 1;
fixed32 gemport_id = 2;
string pbit_map = 3;
bool aes_encryption = 4;
SchedulingPolicy sched_policy = 5; // This can be SP or WRR
fixed32 priority = 6;
fixed32 weight = 7;
DiscardPolicy discard_policy = 8;
DiscardConfig discard_config = 9;
}
message TrafficQueues {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
fixed32 uni_id = 4;
fixed32 port_no = 5;
repeated TrafficQueue traffic_queues = 6;
fixed32 tech_profile_id = 7;
}