You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
441 lines
16 KiB
441 lines
16 KiB
1 year ago
|
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: stds-802-1-L@ieee.org
|
||
|
|
||
|
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: STDS-802-1-L@IEEE.ORG";
|
||
|
description
|
||
|
"This module provides for management of IEEE Std 802.1Q Bridges
|
||
|
that support Scheduled Traffic Enhancements.";
|
||
|
|
||
|
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
|
||
|
(. = 'sched:set-and-hold-mac') or
|
||
|
(. = '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 {
|
||
|
/* check removed to allow empty list (for example when TAS is not used on
|
||
|
a port that support it):
|
||
|
must "(count(./gate-control-entry) > 0)" {
|
||
|
error-message "admin-control-list empty.";
|
||
|
} */
|
||
|
|
||
|
/* check removed to allow not defining supported-list-max and gate-control-entry,
|
||
|
for example when TAS is not used on a port.
|
||
|
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 {
|
||
|
/* IRT : removed invalid comparison between two rational-grouping: not numbers */
|
||
|
/*must "(. <= ../supported-cycle-max)" {
|
||
|
error-message "admin-cycle-time must not be greater than supported-cycle-max";
|
||
|
}*/
|
||
|
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 {
|
||
|
/* IRT : removed invalid comparison between two rational-grouping: not numbers */
|
||
|
/*must "(. <= ../supported-cycle-max)" {
|
||
|
error-message "oper-cycle-time must not be greater than supported-cycle-max";
|
||
|
}*/
|
||
|
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";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|