blob: 16522ccae99e5460c748f351a97d297f8860586a [file] [log] [blame]
Abhilash Laxmeshwardfbb74d2019-07-23 08:03:08 -04001// Copyright (c) 2018 Open Networking Foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at:
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
Serkant Uluderyacbcfaa42019-10-18 13:25:08 +030017option go_package = "github.com/opencord/voltha-protos/v3/go/tech_profile";
18option java_package = "org.opencord.voltha.tech_profile";
Abhilash Laxmeshwardfbb74d2019-07-23 08:03:08 -040019
20package tech_profile;
21import "google/api/annotations.proto";
22
23enum Direction {
24 UPSTREAM = 0;
25 DOWNSTREAM = 1;
26 BIDIRECTIONAL = 2;
27}
28
29enum SchedulingPolicy {
30 WRR = 0;
31 StrictPriority = 1;
32 Hybrid = 2;
33}
34
35enum AdditionalBW {
36 AdditionalBW_None = 0;
37 AdditionalBW_NA = 1;
38 AdditionalBW_BestEffort = 2;
39 AdditionalBW_Auto = 3;
40}
41
42enum DiscardPolicy {
43 TailDrop = 0;
44 WTailDrop = 1;
45 Red = 2;
46 WRed = 3;
47}
48
49enum InferredAdditionBWIndication {
50 InferredAdditionBWIndication_None = 0;
51 InferredAdditionBWIndication_Assured = 1;
52 InferredAdditionBWIndication_BestEffort = 2;
53}
54
55message SchedulerConfig {
56 Direction direction = 1;
57 AdditionalBW additional_bw = 2; // Valid on for “direction == Upstream”.
58 fixed32 priority = 3;
59 fixed32 weight = 4;
60 SchedulingPolicy sched_policy = 5;
61}
62
63message TrafficShapingInfo {
64 fixed32 cir = 1;
65 fixed32 cbs = 2;
66 fixed32 pir = 3;
67 fixed32 pbs = 4;
68 fixed32 gir = 5; // only if “direction == Upstream ”
69 InferredAdditionBWIndication add_bw_ind = 6; // only if “direction == Upstream”
70}
71
72message TrafficScheduler {
73 Direction direction = 1;
74 fixed32 alloc_id = 2; // valid only if “direction == Upstream ”
75 SchedulerConfig scheduler = 3;
76 TrafficShapingInfo traffic_shaping_info = 4;
Abhilash Laxmeshwardfbb74d2019-07-23 08:03:08 -040077}
78
79message TrafficSchedulers {
80 fixed32 intf_id = 1;
81 fixed32 onu_id = 2;
82 fixed32 uni_id = 4;
83 fixed32 port_no = 5;
84 repeated TrafficScheduler traffic_scheds = 3;
85}
86
87message TailDropDiscardConfig {
88 fixed32 queue_size = 1;
89}
90
91message RedDiscardConfig {
92 fixed32 min_threshold = 1;
93 fixed32 max_threshold = 2;
94 fixed32 max_probability = 3;
95}
96
97message WRedDiscardConfig {
98 RedDiscardConfig green = 1;
99 RedDiscardConfig yellow = 2;
100 RedDiscardConfig red = 3;
101}
102
103message DiscardConfig {
104 DiscardPolicy discard_policy = 1;
105 oneof discard_config {
106 TailDropDiscardConfig tail_drop_discard_config = 2;
107 RedDiscardConfig red_discard_config = 3;
108 WRedDiscardConfig wred_discard_config = 4;
109 }
110}
111
112message TrafficQueue {
113 Direction direction = 1;
114 fixed32 gemport_id = 2;
115 string pbit_map = 3;
116 bool aes_encryption = 4;
117 SchedulingPolicy sched_policy = 5; // This can be SP or WRR
118 fixed32 priority = 6;
119 fixed32 weight = 7;
120 DiscardPolicy discard_policy = 8;
121 DiscardConfig discard_config = 9;
Abhilash Laxmeshwardfbb74d2019-07-23 08:03:08 -0400122}
123
124message TrafficQueues {
125 fixed32 intf_id = 1;
126 fixed32 onu_id = 2;
127 fixed32 uni_id = 4;
128 fixed32 port_no = 5;
129 repeated TrafficQueue traffic_queues = 6;
130}