-
Notifications
You must be signed in to change notification settings - Fork 1
executable file
·450 lines (439 loc) · 16.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
module ieee802-dot1q-sched {
namespace "urn:ieee:std:802.1Q:yang:ieee802-dot1q-sched";
prefix sched;
import ietf-yang-types {
prefix yang;
}
import ieee802-types {
prefix ieee802;
}
import ieee802-dot1q-types {
prefix dot1q-types;
}
import ietf-interfaces {
prefix if;
}
import ieee802-dot1q-bridge {
prefix dot1q;
}
organization
"IEEE 802.1 Working Group";
contact
"WG-URL: http://www.ieee802.org/1/
WG-EMail: [email protected]
Contact: IEEE 802.1 Working Group Chair
Postal: C/O IEEE 802.1 Working Group
IEEE Standards Association
445 Hoes Lane
P.O. Box 1331
Piscataway
NJ 08855-1331
USA
E-mail: [email protected]";
description
"This module provides for management of IEEE Std 802.1Q Bridges
that support Scheduled Traffic Enhancements.";
revision 2021-04-09 {
description
"Included bug-fix to 2020-07-07 revision. Check of admin-cycle-time
and oper-cycle-time <= supported-cycle-max was wrong.
Added prefixes.
Published as part of IEEE Std 802.1Qcw. Initial version.";
reference
"IEEE Std 802.1Qcw - Bridges and Bridged Networks — Amendment:
YANG Data Models for Scheduled Traffic, Frame Preemption, and
Per-Stream Filtering and Policing.";
}
revision 2020-07-07 {
description
"Published as part of IEEE Std 802.1Qcw.
Initial version.";
reference
"IEEE Std 802.1Qcw - Bridges and Bridged Networks — Amendment:
YANG Data Models for Scheduled Traffic, Frame Preemption, and
Per-Stream Filtering and Policing.";
}
feature scheduled-traffic {
description
"Enhancements for Scheduled Traffic supported.";
reference
"IEEE Std 802.1Q-2018";
}
identity set-gate-states {
base dot1q-types:type-of-operation;
description
"Operation to set the gate states.";
}
identity set-and-hold-mac {
base dot1q-types:type-of-operation;
description
"Operation to set and hold MAC.";
}
identity set-and-release-mac {
base dot1q-types:type-of-operation;
description
"Operation to set and release MAC.";
}
grouping sched-gate-control-entries {
description
"A GateControlEntry consists of an operation name,
followed by up to 2 parameters associated with the
operation. The first parameter is a gateStatesValue;
the second parameter is a timeIntervalValue";
uses dot1q-types:base-gate-control-entries {
refine "gate-control-entry/operation-name" {
must "(. = 'sched:set-gate-states') or\n(. = 'sched:set-and-hold-mac') or\n(. = 'sched:set-and-release-mac')";
}
refine "gate-control-entry/time-interval-value" {
must "(. <= ../../../supported-interval-max )";
}
augment "gate-control-entry" {
description
"Augment gate-control-entry from base-gate-control-entries
with parameter gate-states-value.";
leaf gate-states-value {
type uint8;
mandatory true;
description
"gateStatesValue is the gate states for this entry for the
Port. The gates are immediately set to the states in
gateStatesValue when this entry executes. The bits of the
octet represent the gate states for the corresponding
traffic classes; the most-significant bit corresponds to
traffic class 7, the least-significant bit to traffic class
0. A bit value of 0 indicates closed; a bit value of 1
indicates open.";
reference
"12.29.1.2.2 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018";
}
}
}
}
augment "/if:interfaces/if:interface/dot1q:bridge-port" {
if-feature "scheduled-traffic";
description
"Augment bridge-port with Scheduled Traffic configuration.";
container gate-parameter-table {
description
"A table that contains the per-port manageable parameters for
traffic scheduling. For a given Port, an entry in the table
exists. All writable objects in this table must be persistent
over power up restart/reboot.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018
8.6.9 of IEEE Std 802.1Q-2018";
list queue-max-sdu-table {
key "traffic-class";
description
"A list containing a set of max SDU parameters, one for each
traffic class. All writable objects in this table must be
persistent over power up restart/reboot.";
reference
"12.29.1.1 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018
8.6.9 of IEEE Std 802.1Q-2018";
leaf traffic-class {
type dot1q-types:traffic-class-type;
description
"Traffic class";
}
leaf queue-max-sdu {
type uint32;
default "0";
description
"The value of the queueMaxSDU parameter for the traffic
class. A value of 0 is interpreted as the max SDU size
supported by the underlying MAC. The value must be retained
across reinitializations of the management system.";
reference
"12.29.1.1.1 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018
8.6.9 of IEEE Std 802.1Q-2018";
}
leaf transmission-overrun {
type yang:counter64;
default "0";
config false;
description
"A counter of transmission overrun events, where a PDU is
still being transmitted by a MAC at the time when the
transmission gate for the queue closed.";
reference
"12.29.1.1.2 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018
8.6.9 of IEEE Std 802.1Q-2018";
}
}
leaf gate-enabled {
type boolean;
default "false";
description
"The GateEnabled parameter determines whether traffic
scheduling is active (true) or inactive (false). The value
must be retained across reinitializations of the management
system.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.8.2 of IEEE Std 802.1Q-2018
8.6.9.4.14 of IEEE Std 802.1Q-2018";
}
leaf admin-gate-states {
type uint8;
default "255";
description
"AdminGateStates is the administrative value of the initial
gate states for the Port. The bits of the octet represent
the gate states for the corresponding traffic classes; the
most-significant bit corresponds to traffic class 7, the
least-significant bit to traffic class 0. A bit value of 0
indicates closed; a bit value of 1 indicates open. The value
must be retained across reinitializations of the management
system.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.5 of IEEE Std 802.1Q-2018";
}
leaf oper-gate-states {
type uint8;
config false;
description
"OperGateStates is the operational value of the current gate
states for the Port. The bits of the octet represent the
gate states for the corresponding traffic classes; the
most-significant bit corresponds to traffic class 7, the
least-significant bit to traffic class 0. A bit value of 0
indicates closed; a bit value of 1 indicates open.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.22 of IEEE Std 802.1Q-2018";
}
container admin-control-list {
must "(count(./gate-control-entry) > 0)" {
error-message
"admin-control-list empty.";
}
must "(count(./gate-control-entry) <= ../supported-list-max)" {
error-message
"Number of elements in admin-control-list must
not be greater than supported-list-max";
}
config true;
description
"AdminControlList is the administrative value of the gate
control list for the Port.
The value must be retained across reinitializations of the
management system.";
reference
"12.29.1.2 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018
8.6.9.4.2 of IEEE Std 802.1Q-2018";
uses sched-gate-control-entries;
}
container oper-control-list {
must "(count(./gate-control-entry) > 0)" {
error-message
"oper-control-list empty.";
}
must "(count(./gate-control-entry) <= ../supported-list-max)" {
error-message
"Number of elements in oper-control-list must
not be greater than supported-list-max";
}
config false;
description
"OperControlList is the operational value of the gate
control list for the Port.";
reference
"12.29.1.2 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018
8.6.9.4.19 of IEEE Std 802.1Q-2018";
uses sched-gate-control-entries;
}
container admin-cycle-time {
must "(./numerator div ./denominator <=\n../supported-cycle-max/numerator div ../supported-cycle-max/denominator )" {
error-message
"admin-cycle-time must not be greater than supported-cyclemax";
}
description
"AdminCycleTime specifies the administrative value of the
gating cycle time for the Port.
AdminCycleTime is a rational number of seconds, defined by
an integer numerator and an integer denominator.
The value must be retained across reinitializations of the
management system.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018
8.6.9.4.3 of IEEE Std 802.1Q-2018";
uses ieee802:rational-grouping;
}
container oper-cycle-time {
must "(./numerator div ./denominator <=\n../supported-cycle-max/numerator div ../supported-cycle-max/denominator )" {
error-message
"oper-cycle-time must not be greater than supported-cyclemax";
}
config false;
description
"OperCycleTime specifies the operational value of the gating
cycle time for the Port.
OperCycleTime is a rational number of seconds, defined by an
integer numerator and an integer denominator.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.8.4 of IEEE Std 802.1Q-2018
8.6.9.4.20 of IEEE Std 802.1Q-2018";
uses ieee802:rational-grouping;
}
leaf admin-cycle-time-extension {
type uint32;
units "nanoseconds";
description
"An unsigned integer number of nanoseconds, defining the
maximum amount of time by which the gating cycle for the
Port is permitted to be extended when a new cycle
configuration is being installed. This is the administrative
value.
The value must be retained across reinitializations of the
management system.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.4 of IEEE Std 802.1Q-2018";
}
leaf oper-cycle-time-extension {
type uint32;
units "nanoseconds";
config false;
description
"An unsigned integer number of nanoseconds, defining the
maximum amount of time by which the gating cycle for the
Port is permitted to be extended when a new cycle
configuration is being installed. This is the operational
value.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.21 of IEEE Std 802.1Q-2018";
}
container admin-base-time {
description
"The administrative value of the base time at which gating
cycles begin, expressed as an IEEE 1588 precision time
protocol (PTP) timescale.
The value must be retained across reinitializations of the
management system.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.1 of IEEE Std 802.1Q-2018";
uses ieee802:ptp-time-grouping;
}
container oper-base-time {
config false;
description
"The operational value of the base time at which gating
cycles begin, expressed as an IEEE 1588 precision time
protocol (PTP) timescale.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.18 of IEEE Std 802.1Q-2018";
uses ieee802:ptp-time-grouping;
}
leaf config-change {
type boolean;
description
"The ConfigChange parameter signals the start of a
configuration change when it is set to TRUE, indicating that
the administrative parameters for the Port are ready to be
copied into their corresponding operational parameters. This
should only be done when the various administrative
parameters are all set to appropriate values.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.7 of IEEE Std 802.1Q-2018";
}
container config-change-time {
config false;
description
"The time at which the next config change is scheduled to
occur.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.9 of IEEE Std 802.1Q-2018";
uses ieee802:ptp-time-grouping;
}
leaf tick-granularity {
type uint32;
config false;
description
"The granularity of the cycle time clock, represented as an
unsigned number of tenths of nanoseconds.
The value must be retained across reinitializations of the
management system.";
reference
"12.29.1 of IEEE Std 802.1Q-2018";
}
container current-time {
config false;
description
"The current time as maintained by the local system.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.10 of IEEE Std 802.1Q-2018";
uses ieee802:ptp-time-grouping;
}
leaf config-pending {
type boolean;
config false;
description
"The value of the ConfigPending state machine variable. The
value is TRUE if a configuration change is in progress but
has not yet completed.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.4.8 of IEEE Std 802.1Q-2018";
}
leaf config-change-error {
type yang:counter64;
config false;
description
"A counter of the number of times that a re-configuration of
the traffic schedule has been requested with the old
schedule still running and the requested base time was in
the past.";
reference
"12.29.1 of IEEE Std 802.1Q-2018
8.6.9.3.1 of IEEE Std 802.1Q-2018";
}
leaf supported-list-max {
type uint32;
description
"The maximum value supported by this Port for the
AdminControlListLength and OperControlListLength parameters.
It is available for use by schedule computation software to
determine the port’s control list capacity prior to
computation. The object may optionally be read-only.";
reference
"12.29.1.5 of IEEE Std 802.1Q-2018
8.6.9.4.21 of IEEE Std 802.1Q-2018";
}
container supported-cycle-max {
description
"The maximum value supported by this Port of the
AdminCycleTime and OperCycleTime parameters. The object may
optionally be read-only.";
reference
"12.29.1.6 of IEEE Std 802.1Qcw";
uses ieee802:rational-grouping;
}
leaf supported-interval-max {
type uint32;
description
"The maximum value supported by this Port of the
TimeIntervalValue parameter. The object may optionally
be read-only.";
reference
"12.29.1.7 of IEEE Std 802.1Qcw";
}
}
}
}