blob: 493f2a39426fe5afe231aefa5088b303f4f9a412 [file] [log] [blame]
Joey Armstrong25589d82024-01-02 22:31:35 -05001// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
Abhilash Laxmeshwardfbb74d2019-07-23 08:03:08 -04002//
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
khenaidoo5fc5cea2021-08-11 17:39:16 -040017option go_package = "github.com/opencord/voltha-protos/v5/go/tech_profile";
Serkant Uluderyacbcfaa42019-10-18 13:25:08 +030018option 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;
Burak Gurdagce064352020-04-20 20:11:18 +000077 fixed32 tech_profile_id = 5;
Abhilash Laxmeshwardfbb74d2019-07-23 08:03:08 -040078}
79
80message TrafficSchedulers {
81 fixed32 intf_id = 1;
82 fixed32 onu_id = 2;
83 fixed32 uni_id = 4;
84 fixed32 port_no = 5;
85 repeated TrafficScheduler traffic_scheds = 3;
86}
87
88message TailDropDiscardConfig {
89 fixed32 queue_size = 1;
90}
91
92message RedDiscardConfig {
93 fixed32 min_threshold = 1;
94 fixed32 max_threshold = 2;
95 fixed32 max_probability = 3;
96}
97
98message WRedDiscardConfig {
99 RedDiscardConfig green = 1;
100 RedDiscardConfig yellow = 2;
101 RedDiscardConfig red = 3;
102}
103
104message DiscardConfig {
105 DiscardPolicy discard_policy = 1;
106 oneof discard_config {
107 TailDropDiscardConfig tail_drop_discard_config = 2;
108 RedDiscardConfig red_discard_config = 3;
109 WRedDiscardConfig wred_discard_config = 4;
110 }
111}
112
113message TrafficQueue {
114 Direction direction = 1;
115 fixed32 gemport_id = 2;
116 string pbit_map = 3;
117 bool aes_encryption = 4;
118 SchedulingPolicy sched_policy = 5; // This can be SP or WRR
119 fixed32 priority = 6;
120 fixed32 weight = 7;
121 DiscardPolicy discard_policy = 8;
122 DiscardConfig discard_config = 9;
Abhilash Laxmeshwardfbb74d2019-07-23 08:03:08 -0400123}
124
125message TrafficQueues {
126 fixed32 intf_id = 1;
127 fixed32 onu_id = 2;
128 fixed32 uni_id = 4;
129 fixed32 port_no = 5;
130 repeated TrafficQueue traffic_queues = 6;
Burak Gurdagce064352020-04-20 20:11:18 +0000131 fixed32 tech_profile_id = 7;
Sridhar Ravindra8859b3e2025-05-28 13:02:27 +0530132 fixed32 network_intf_id = 8;
Abhilash Laxmeshwardfbb74d2019-07-23 08:03:08 -0400133}
Girish Gowdra9c3e1c82021-06-01 14:29:34 -0700134
135message InstanceControl {
136 string onu = 1;
137 string uni = 2;
138 string max_gem_payload_size = 3;
139}
140
141message QThresholds {
142 uint32 q_threshold1 = 1;
143 uint32 q_threshold2 = 2;
144 uint32 q_threshold3 = 3;
145 uint32 q_threshold4 = 4;
146 uint32 q_threshold5 = 5;
147 uint32 q_threshold6 = 6;
148 uint32 q_threshold7 = 7;
149}
150
151message GemPortAttributes {
152 fixed32 gemport_id = 1; // valid only when referenced in the tech profile instance
153 string max_q_size = 2;
154 string pbit_map = 3;
155 string aes_encryption = 4;
156 SchedulingPolicy scheduling_policy = 5; // This can be SP or WRR
157 fixed32 priority_q = 6;
158 fixed32 weight = 7;
159 DiscardPolicy discard_policy = 8;
160 RedDiscardConfig discard_config = 9; // used with version 1 of tech profile
161 DiscardConfig discard_config_v2 = 14; // used with version 2 of tech profile
162 string is_multicast = 10;
163 fixed32 multicast_gem_id = 11;
164 string dynamic_access_control_list = 12;
165 string static_access_control_list = 13;
166}
167
168message SchedulerAttributes {
169 Direction direction = 1;
170 uint32 alloc_id = 2; // Valid on for “direction == Upstream” and when referenced in the tech profile instance
171 AdditionalBW additional_bw = 3; // Valid on for “direction == Upstream”.
172 fixed32 priority = 4;
173 fixed32 weight = 5;
174 SchedulingPolicy q_sched_policy = 6;
175}
176
177message EPONQueueAttributes {
178 string max_q_size = 1;
179 string pbit_map = 2;
180 uint32 gemport_id = 3;
181 string aes_encryption = 4;
182 string traffic_type = 5;
183 uint32 unsolicited_grant_size = 6;
184 uint32 nominal_interval = 7;
185 uint32 tolerated_poll_jitter = 8;
186 uint32 request_transmission_policy = 9;
187 uint32 num_q_sets = 10;
188 QThresholds q_thresholds = 11;
189 SchedulingPolicy scheduling_policy = 12;
190 uint32 priority_q = 13;
191 uint32 weight = 14;
192 DiscardPolicy discard_policy = 15;
193 RedDiscardConfig discard_config = 16; // used with version 1 of tech profile
194 DiscardConfig discard_config_v2 = 17; // used with version 2 of tech profile
195}
196
197// TechProfile definition (relevant for GPON, XGPON and XGS-PON technologies)
198message TechProfile {
199 string name = 1;
200 uint32 version = 2;
201 string profile_type = 3;
202 uint32 num_gem_ports = 4;
203 InstanceControl instance_control = 5;
204 SchedulerAttributes us_scheduler = 6;
205 SchedulerAttributes ds_scheduler = 7;
206 repeated GemPortAttributes upstream_gem_port_attribute_list = 8;
207 repeated GemPortAttributes downstream_gem_port_attribute_list = 9;
208}
209
210// EPON TechProfile definition
211message EponTechProfile {
212 string name = 1;
213 uint32 version = 2;
214 string profile_type = 3;
215 uint32 num_gem_ports = 4;
216 InstanceControl instance_control = 5;
217 string package_type = 6;
218 repeated EPONQueueAttributes upstream_queue_attribute_list= 7;
219 repeated EPONQueueAttributes downstream_queue_attribute_list = 8;
220}
221
222// TechProfile Instance definition (relevant for GPON, XGPON and XGS-PON technologies)
223message TechProfileInstance {
224 string name = 1;
225 uint32 version = 2;
226 string subscriber_identifier = 3;
227 string profile_type = 4;
228 uint32 num_gem_ports = 5;
229 InstanceControl instance_control = 6;
230 SchedulerAttributes us_scheduler = 7;
231 SchedulerAttributes ds_scheduler = 8;
232 repeated GemPortAttributes upstream_gem_port_attribute_list = 9;
233 repeated GemPortAttributes downstream_gem_port_attribute_list = 10;
234}
235
236// EPON TechProfile Instance definition.
237message EponTechProfileInstance {
238 string name = 1;
239 uint32 version = 2;
240 string subscriber_identifier = 3;
241 string profile_type = 4;
242 uint32 num_gem_ports = 5;
243 uint32 alloc_id = 6;
244 InstanceControl instance_control = 7;
245 string package_type = 8;
246 repeated EPONQueueAttributes upstream_queue_attribute_list= 9;
247 repeated EPONQueueAttributes downstream_queue_attribute_list = 10;
248}
249
250// Resource Instance definition
251message ResourceInstance {
252 uint32 tp_id = 1;
253 string profile_type = 2;
254 string subscriber_identifier = 3;
255 uint32 alloc_id = 4;
256 repeated uint32 gemport_ids = 5;
257}