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 standard itself for full legal notices."; revision 2021-12-08 { 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"; } } } } }