An augmented YANG Ethernet TSN network data model to interface Ethernet TSN network design tools (e.g. simulator, formal analysis) and hardware.
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.

817 lines
26 KiB

module ieee802-dot1cb-stream-identification {
yang-version "1.1";
namespace urn:ieee:std:802.1Q:yang:ieee802-dot1cb-stream-identification;
prefix dot1cb-sid;
import ieee802-types {
prefix ieee;
}
import ieee802-dot1q-types {
prefix dot1qtypes;
}
import ietf-inet-types {
prefix inet;
}
import ietf-interfaces {
prefix if;
}
import ieee802-dot1cb-stream-identification-types {
prefix dot1cb-sid-types;
}
organization
"Institute of Electrical and Electronics Engineers";
contact
"WG-URL: http://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
Piscataway, NJ 08854
USA
E-mail: stds-802-1-chairs@ieee.org";
description
"Management objects that control the stream identification from IEEE
Std 802.1CB-2017. This YANG data model conforms to the Network
Management Datastore Architecture defined in RFC 8342. Copyright (C)
IEEE (2021). This version of this YANG module is part of IEEE Std
802.1CBcv; see the draft itself for full legal notices.";
revision 2021-05-06 {
description
"Published as part of IEEE Std 802.1CBcv-2021. Initial version.";
reference
"IEEE Std 802.1CBcv-2021, Frame Replication and Elimination for
Reliability - FRER YANG Data Model and Management Information Base
Module.";
}
identity null-stream-identification {
base dot1cb-sid-types:strid-idty;
description
"Null Stream Identification";
}
identity smac-vlan-stream-identification {
base dot1cb-sid-types:strid-idty;
description
"Source MAC and VLAN Stream Identification";
}
identity dmac-vlan-stream-identification {
base dot1cb-sid-types:strid-idty;
description
"Active Destination MAC and VLAN Stream Identification";
}
identity ip-stream-identification {
base dot1cb-sid-types:strid-idty;
description
"IP Stream Identification";
}
typedef vlan-tag-identification-type {
type enumeration {
enum tagged {
value 1;
description
"A frame must have a VLAN tag to be recognized as belonging to
the Stream.";
}
enum priority {
value 2;
description
"A frame must be untagged, or have a VLAN tag with a VLAN ID =
0 to be recognized as belonging to the Stream.";
}
enum all {
value 3;
description
"A frame is recognized as belonging to the Stream whether
tagged or not.";
}
}
description
"Enumeration describing how a Stream can be identified using the
VLAN tag.";
}
typedef vlan-identifier-type {
type uint16 {
range "0 .. 4095";
}
description
"Specifies the vlan_identifier. A value of 0 indicates that the
vlan_identifier carries a special meaning.";
}
list stream-identity {
key "index";
description
"The Stream identity table consists of a set of tsnStreamIdEntry
objects, each relating to a single Stream, specifying the points in
the system where Stream identification functions are to be
instantiated. Each entry in the Stream identity table has a
tsnStreamIdHandle object specifying a stream_handle value and one
or more tsnStreamIdEntry objects describing one identification
method for that Stream. If a single Stream has multiple
identification methods, perhaps (but not necessarily) on different
ports, then there can be multiple tsnStreamIdEntry objects with the
same value for the tsnStreamIdHandle. If the HSR or PRP method or
the Sequence encode/decode function is applied to a packet, then
the LanId or PathId fields are also used to identify the Stream to
which the packet belongs.";
reference
"9.1. of IEEE Std 802.1CB-2017";
leaf index {
type uint32;
description
"If a single Stream has multiple identification methods, perhaps
(but not necessarily) on different ports, then there can be
multiple tsnStreamIdEntry objects with the same value for the
tsnStreamIdHandle";
}
leaf handle {
type uint32;
mandatory true;
description
"The objects in a given entry of the Stream identity table are
used to control packets whose stream_handle subparameter is equal
to the entry’s tsnStreamIdHandle object. The specific values used
in the tsnStreamIdHandle object are not necessarily used in the
system; they are used only to relate the various management
objects in Clause 9 and Clause 10.";
reference
"9.1.1.1 of IEEE Std 802.1CB-2017";
}
container in-facing {
description
"Container for in-facing Stream identification functions.";
leaf-list input-port {
type if:interface-ref;
description
"The list of ports on which an in-facing Stream identification
function using this identification method is to be placed for
this Stream in the input (coming from the system forwarding
function) direction. Any number of tsnStreamIdEntry objects can
list the same port for the same tsnStreamIdHandle in its
tsnStreamIdInFacInputPortList.";
reference
"9.1.1.4 of IEEE Std 802.1CB-2017";
}
leaf-list output-port {
type if:interface-ref;
description
"The list of ports on which an in-facing Stream identification
function using this identification method is to be placed for
this Stream in the output (towards the system forwarding
function) direction. At most one tsnStreamIdEntry can list a
given port for a given tsnStreamIdHandle in its
tsnStreamIdInFacOutputPortList.";
reference
"9.1.1.2 of IEEE Std 802.1CB-2017";
}
}
container out-facing {
description
"Container for out-facing Stream identification functions.";
leaf-list input-port {
type if:interface-ref;
description
"The list of ports on which an out-facing Stream identification
function using this identification method is to be placed for
this Stream in the input (coming from the physical interface)
direction. Any number of tsnStreamIdEntry objects can list the
same port for the same tsnStreamIdHandle in its
tsnStreamIdOutFacInputPortList.";
reference
"9.1.1.5 of IEEE Std 802.1CB-2017";
}
leaf-list output-port {
type if:interface-ref;
description
"The list of ports on which an out-facing Stream identification
function using this identification method is to be placed for
this Stream in the output (towards the physical interface)
direction. At most one tsnStreamIdEntry can list a given port
for a given tsnStreamIdHandle in its
tsnStreamIdOutFacOutputPortList.";
reference
"9.1.1.3 of IEEE Std 802.1CB-2017";
}
}
choice parameters {
mandatory true;
description
"The number of controlling parameters for a Stream identification
method, their types and values, are specific to the
tsnStreamIdIdentificationType.";
reference
"9.1.1.7 of IEEE Std 802.1CB-2017";
container null-stream-identification {
description
"When instantiating an instance of the Null Stream
identification function for a particular input Stream, the
managed objects in this container serve as the
tsnStreamIdParameters managed object.";
reference
"9.1.2 of IEEE Std 802.1CB-2017";
container identification-type {
config false;
description
"The identification type indicating the method used to
identify packets belonging to the Stream. The identification
type contains a type number and an Organizationally Unique
Identifier (OUI) or Company ID (CID) to identify the
organization defining the identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
leaf type-number {
type dot1cb-sid-types:stream-id-function;
default "null-stream";
description
"The stream identification type used for the Null Stream
identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
leaf oui-cid {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2}){2}";
}
default "00-80-C2";
description
"The Organizationally Unique Identifier (OUI) or Company ID
(CID) to identify the organization defining the
identification method. For identification methods defined
in IEEE Std 802.1CB-2017 the OUI/CID is always 00-80-C2.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
}
leaf destination-mac {
type ieee:mac-address;
description
"Specifies the destination_address that identifies a packet
in an EISS indication primitive, to the Null Stream
identification function. The ieee:mac-address type has a
pattern that allows upper and lower case letters. To avoid
issues with string comparison, it is suggested to only use
Upper Case for the letters in the hexadecimal numbers. There
is still an issue with a difference between the IETF
mac-address definition and the IEEE mac-address definition,
so consider that if implementing code that compares
mac-addresses.";
reference
"9.1.2.1 of IEEE Std 802.1CB-2017";
}
leaf tagged {
type vlan-tag-identification-type;
description
"An enumerated value indicating whether a packet in an EISS
indication primitive to the Null Stream identification
function is permitted to have a VLAN tag.";
reference
"9.1.2.2 of IEEE Std 802.1CB-2017";
}
leaf vlan {
type vlan-identifier-type;
description
"Specifies the vlan_identifier parameter that identifies a
packet in an EISS indication primitive to the Null Stream
identification function. A value of 0 indicates that the
vlan_identifier parameter is ignored on EISS indication
primitives.";
reference
"9.1.2.3 of IEEE Std 802.1CB-2017";
}
}
container smac-vlan-stream-identification {
description
"When instantiating an instance of the Source MAC and VLAN
Stream identification function for a particular input Stream,
the managed objects in the following subclauses serve as the
tsnStreamIdParameters managed object.";
reference
"9.1.3 of IEEE Std 802.1CB-2017";
container identification-type {
config false;
description
"The identification type indicating the method used to
identify packets belonging to the Stream. The identification
type contains a type number and an Organizationally Unique
Identifier (OUI) or Company ID (CID) to identify the
organization defining the identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
leaf type-number {
type dot1cb-sid-types:stream-id-function;
default "smac-vlan";
description
"The stream identification type used for the Source MAC and
VLAN Stream identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
leaf oui-cid {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2}){2}";
}
default "00-80-C2";
description
"The Organizationally Unique Identifier (OUI) or Company ID
(CID) to identify the organization defining the
identification method. For identification methods defined
in IEEE Std 802.1CB-2017 the OUI/CID is always 00-80-C2.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
}
leaf source-mac {
type ieee:mac-address;
description
"Specifies the source_address that identifies a packet in an
EISS indication primitive, to the Source MAC and VLAN Stream
identification function. The ieee:mac-address type has a
pattern that allows upper and lower case letters. To avoid
issues with string comparison, it is suggested to only use
Upper Case for the letters in the hexadecimal numbers. There
is still an issue with a difference between the IETF
mac-address definition and the IEEE mac-address definition,
so consider that if implementing code that compares
mac-addresses.";
reference
"9.1.3.1 of IEEE Std 802.1CB-2017";
}
leaf tagged {
type vlan-tag-identification-type;
description
"An enumerated value indicating whether a packet in an EISS
indication primitive to the Source MAC and VLAN Stream
identification function is permitted to have a VLAN tag.";
reference
"9.1.3.2 of IEEE Std 802.1CB-2017";
}
leaf vlan {
type vlan-identifier-type;
description
"Specifies the vlan_identifier parameter that identifies a
packet in an EISS indication primitive to the Source MAC and
VLAN Stream identification function. A value of 0 indicates
that the vlan_identifier parameter is ignored on EISS
indication primitives.";
reference
"9.1.3.3 of IEEE Std 802.1CB-2017";
}
}
container dmac-vlan-stream-identification {
description
"When instantiating an instance of the Active Destination MAC
and VLAN Stream identification function for a particular output
Stream, the managed objects in the following subclauses, along
with those listed in 9.1.2, serve as the tsnStreamIdParameters
managed object.";
reference
"9.1.4 of IEEE Std 802.1CB-2017";
container identification-type {
config false;
description
"The identification type indicating the method used to
identify packets belonging to the Stream. The identification
type contains a type number and an Organizationally Unique
Identifier (OUI) or Company ID (CID) to identify the
organization defining the identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
leaf type-number {
type dot1cb-sid-types:stream-id-function;
default "dmac-vlan";
description
"The stream identification type used for the Active
Destination MAC and VLAN Stream identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
leaf oui-cid {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2}){2}";
}
default "00-80-C2";
description
"The Organizationally Unique Identifier (OUI) or Company ID
(CID) to identify the organization defining the
identification method. For identification methods defined
in IEEE Std 802.1CB-2017 the OUI/CID is always 00-80-C2.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
}
container down {
description
"Container for all parameters which are sent to lower layers.";
leaf destination-mac {
type ieee:mac-address;
description
"Specifies the destination_address parameter to use in the
EISS request primitive for output packets sent to lower
layers by the Active Destination MAC and VLAN Stream
identification function, and the destination_address that
identifies an input packet in an EISS indication primitive
to the Active Destination MAC and VLAN Stream
identification function. The ieee:mac-address type has a
pattern that allows upper and lower case letters. To avoid
issues with string comparison, it is suggested to only use
Upper Case for the letters in the hexadecimal numbers.
There is still an issue with a difference between the IETF
mac-address definition and the IEEE mac-address definition,
so consider that if implementing code that compares
mac-addresses.";
reference
"9.1.4.1 of IEEE Std 802.1CB-2017";
}
leaf tagged {
type vlan-tag-identification-type;
description
"An enumerated value indicating whether a packet in an EISS
indication or request primitive between the Active
Destination MAC and VLAN Stream identification function and
the lower layers is to have a VLAN tag. This variable is
not used in an FRER C-component. See 8.4.";
reference
"9.1.4.2 of IEEE Std 802.1CB-2017";
}
leaf vlan {
type vlan-identifier-type;
description
"Specifies the vlan_identifier parameter to use in the EISS
request primitive for output packets sent to lower layers
by the Active Destination MAC and VLAN Stream
identification function, and the vlan_identifier that
identifies an input packet in an EISS indication primitive
to the Active Destination MAC and VLAN Stream
identification function. A value of 0 indicates that the
vlan_identifier parameter is ignored on EISS indication
primitives.";
reference
"9.1.4.3 of IEEE Std 802.1CB-2017";
}
leaf priority {
type dot1qtypes:priority-type;
description
"Specifies the priority parameter to use in the EISS
request primitive for output packets sent to lower layers
by the Active Destination MAC and VLAN Stream
identification function for all packets in a particular
Stream.";
reference
"9.1.4.4 of IEEE Std 802.1CB-2017";
}
}
container up {
description
"Container for all parameters which are offered to higher
layers.";
leaf destination-mac {
type ieee:mac-address;
description
"Specifies the destination_address parameter to use in the
EISS indication primitive for input packets offered to
upper layers by the Active Destination MAC and VLAN Stream
identification layer. This address replaces the address
that was used to identify the packet
(tsnCpeDmacVlanDownDestMac). The ieee:mac-address type has
a pattern that allows upper and lower case letters. To
avoid issues with string comparison, it is suggested to
only use Upper Case for the letters in the hexadecimal
numbers. There is still an issue with a difference between
the IETF mac-address definition and the IEEE mac-address
definition, so consider that if implementing code that
compares mac-addresses.";
reference
"9.1.4.5 of IEEE Std 802.1CB-2017";
}
leaf tagged {
type vlan-tag-identification-type;
description
"An enumerated value indicating whether a packet in an EISS
indication or request primitive between the Active
Destination MAC and VLAN Stream identification function and
the upper layers is to have a VLAN tag. This variable is
used only by an end system and not by a relay system.";
reference
"9.1.4.6 of IEEE Std 802.1CB-2017";
}
leaf vlan {
type vlan-identifier-type;
description
"Specifies the vlan_identifier parameter to use in the EISS
indication primitive for packets offered to upper layers,
or the VLAN ID field for an IEEE 802.1Q tag in an ISS
mac_service_data_unit. This address replaces the VLAN ID
that was used to identify the packet
(tsnCpeDmacVlanDownVlan).";
reference
"9.1.4.7 of IEEE Std 802.1CB-2017";
}
leaf priority {
type dot1qtypes:priority-type;
description
"Specifies the priority parameter to use in the EISS
indication primitive for packets offered to upper layers.";
reference
"9.1.4.8 of IEEE Std 802.1CB-2017";
}
}
}
container ip-stream-identification {
description
"When instantiating an instance of the IP Stream identification
function, the parameters in the following subclauses replace
the tsnStreamIdParameters managed object.";
reference
"9.1.5 of IEEE Std 802.1CB-2017";
container identification-type {
config false;
description
"The identification type indicating the method used to
identify packets belonging to the Stream. The identification
type contains a type number and an Organizationally Unique
Identifier (OUI) or Company ID (CID) to identify the
organization defining the identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
leaf type-number {
type dot1cb-sid-types:stream-id-function;
default "ip";
description
"The stream identification type used for the IP Stream
identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
leaf oui-cid {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2}){2}";
}
default "00-80-C2";
description
"The Organizationally Unique Identifier (OUI) or Company ID
(CID) to identify the organization defining the
identification method. For identification methods defined
in IEEE Std 802.1CB-2017 the OUI/CID is always 00-80-C2.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
}
leaf destination-mac {
type ieee:mac-address;
description
"Specifies the destination_address parameter that identifies
a packet in an EISS indication primitive. The
ieee:mac-address type has a pattern that allows upper and
lower case letters. To avoid issues with string comparison,
it is suggested to only use Upper Case for the letters in the
hexadecimal numbers. There is still an issue with a
difference between the IETF mac-address definition and the
IEEE mac-address definition, so consider that if implementing
code that compares mac-addresses.";
reference
"9.1.5.1 of IEEE Std 802.1CB-2017";
}
leaf tagged {
type vlan-tag-identification-type;
description
"An enumerated value indicating whether a packet in an EISS
indication or request primitive to the IP Stream
identification function is to have a VLAN tag.";
reference
"9.1.5.2 of IEEE Std 802.1CB-2017";
}
leaf vlan {
type vlan-identifier-type;
description
"Specifies the vlan_identifier parameter that identifies a
packet in an EISS indication primitive. A value of 0
indicates that the frame is not to have a VLAN tag.";
reference
"9.1.5.3 of IEEE Std 802.1CB-2017";
}
leaf ip-source {
type inet:ip-address;
description
"Specifies the IPv4 (RFC 791) or IPv6 (RFC 2460) source
address parameter that must be matched to identify packets
coming up from lower layers. An address of all 0 indicates
that the IP source address is to be ignored on packets
received from lower layers.";
reference
"9.1.5.4 of IEEE Std 802.1CB-2017";
}
leaf ip-destination {
type inet:ip-address;
description
"Specifies the IPv4 (RFC 791) or IPv6 (RFC 2460) destination
address parameter that must be matched to identify packets
coming up from lower layers.";
reference
"9.1.5.5 of IEEE Std 802.1CB-2017";
}
leaf dscp {
type inet:dscp;
description
"Specifies the IPv4 (RFC 791) or IPv6 (RFC 2460)
differentiated services codepoint (DSCP, RFC 2474) that must
be matched to identify packets coming up from the lower
layers. A value of 64 decimal indicates that the DSCP is to
be ignored on packets received from lower layers.";
reference
"9.1.5.6 of IEEE Std 802.1CB-2017";
}
leaf next-protocol {
type enumeration {
enum none {
description
"No protocol is specified";
}
enum udp {
description
"UDP is specified as the next protocol.";
reference
"RFC 768";
}
enum tcp {
description
"TCP is specified as the next protocol.";
reference
"RFC 793";
}
enum sctp {
description
"SCTP is specified as the next protocol.";
reference
"RFC 4960";
}
}
description
"Specifies the IP next protocol parameter that must be
matched to identify packets coming up from lower layers. The
value of this parameter must specify either none, UDP (RFC
768), TCP (RFC 793), or SCTP (RFC 4960). If “none,” then the
tsnCpeIpIdSourcePort and tsnCpeIpIdDestinationPort managed
objects are not used.";
reference
"9.1.5.7 of IEEE Std 802.1CB-2017";
}
leaf source-port {
type inet:port-number;
description
"Specifies the TCP or UDP Source Port parameter that must be
matched to identify packets coming up from lower layers. A
value of 0 indicates that the Source Port number of the
packet is to be ignored on packets received from lower
layers.";
reference
"9.1.5.8 of IEEE Std 802.1CB-2017";
}
leaf destination-port {
type inet:port-number;
description
"Specifies the TCP or UDP Destination Port parameter that
must be matched to identify packets coming up from lower
layers. A value of 0 indicates that the Destination Port
number of the packet is to be ignored on packets received
from lower layers.";
reference
"9.1.5.9 of IEEE Std 802.1CB-2017";
}
}
container organization-specific {
description
"This container allows to select stream identification methods
that are defined by entities outside of IEEE 802.1.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
container identification-type {
description
"The identification type indicating the method used to
identify packets belonging to the Stream. The identification
type contains a type number and an Organizationally Unique
Identifier (OUI) or Company ID (CID) to identify the
organization defining the identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
leaf type-number {
type int32 {
range "256..max";
}
description
"The type number used for an identification method defined
by an entity owning the OUI or CID for this identification
type.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
leaf oui-cid {
type string {
pattern "[0-9A-F]{2}(-[0-9A-F]{2}){2}";
}
description
"The Organizationally Unique Identifier (OUI) or Company ID
(CID) to identify the organization defining the
identification method.";
reference
"9.1.1.6 of IEEE Std 802.1CB-2017";
}
}
}
}
}
augment "/if:interfaces/if:interface/if:statistics" {
description
"The following counters are the counters for stream identification.
All counters are unsigned integers. If used on links faster than
650 000 000 bits per second, they shall be 64 bits in length to
ensure against excessively short wrap times.";
reference
"9.2 of IEEE Std 802.1CB-2017
9.3 of IEEE Std 802.1CB-2017";
container stream-id {
description
"This container contains the per-port as well as the
per-port-per-stream counters for stream identification.";
reference
"9.2 of IEEE Std 802.1CB-2017
9.3 of IEEE Std 802.1CB-2017";
container per-port-counters {
config false;
description
"Contains the per-port counters for stream identification. The
following counters are instantiated for each port on which the
Stream identification function is configured. The counters are
indexed by port number.";
reference
"9.3 of IEEE Std 802.1CB-2017";
leaf input-pkts {
type uint64;
config false;
description
"The tsnCpSidInputPackets counter is incremented once for
each packet identified by any Stream identification function
on this port. Its value equals the sum (modulo the size of
the counters) of all of the tsnCpsSidInputPackets counters on
this same port.";
reference
"9.3.1 of IEEE Std 802.1CB-2017";
}
leaf output-pkts {
type uint64;
config false;
description
"The tsnCpSidOutputPackets counter is incremented once for
each packet passed down the stack by any Stream
identification function on this port. Its value equals the
sum (modulo the size of the counters) of all of the
tsnCpsSidOutputPackets counters on this same port.";
reference
"9.3.2 of IEEE Std 802.1CB-2017";
}
}
list per-port-per-stream-counters {
key "direction-out-facing handle";
config false;
description
"Contains the per-port-per-stream counters for stream
identification. The following counters are instantiated for
each port on which the Stream identification function is
configured. The counters are indexed by port number, facing
(in-facing or out-facing), and stream_handle value
(tsnStreamIdHandle).";
reference
"9.2 of IEEE Std 802.1CB-2017";
leaf direction-out-facing {
type dot1cb-sid-types:direction;
description
"An object indicating whether the counters apply to
out-facing (True) or in-facing (False).";
}
leaf handle {
type leafref {
path '/stream-identity/handle';
}
description
"The according tsnStreamIdHandle for these counters.";
}
leaf input-pkts {
type uint64;
description
"The tsnCpsSidInputPackets counter is incremented once for
each packet identified by the Stream identification function.";
reference
"9.2.1 of IEEE Std 802.1CB-2017";
}
leaf output-pkts {
type uint64;
description
"The tsnCpsSidOutputPackets counter is incremented once for
each packet passed down the stack by the Stream
identification function.";
reference
"9.2.2 of IEEE Std 802.1CB-2017";
}
}
}
}
}