module ieee802-dot1q-congestion-isolation { yang-version "1.1"; namespace urn:ieee:std:802.1Q:yang:ieee802-dot1q-congestion-isolation; prefix dot1q-ci; import ietf-yang-types { prefix yang; } import ieee802-types { prefix ieee; } import ieee802-dot1q-stream-filters-gates { prefix sfsg; } import ieee802-dot1q-types { prefix dot1q-types; } import ietf-inet-types { prefix inet; } 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 "This YANG module augments the configuration and operational state data for interfaces for Congestion Isolation. References in this YANG module to IEEE Std 802.1Q are to IEEE Std 802.1Q-2022 as amended by IEEE Std 802.1Qcz-2023. Copyright (C) IEEE (2023). This version of this YANG module is part of IEEE Std 802.1Q; see the standard itself for full legal notices."; revision 2023-07-03 { description "Published as part of IEEE Std 802.1Qcz-2023."; reference "IEEE Std 802.1Qcz-2023"; } /*--------------------*/ /* Feature */ /*--------------------*/ feature congestion-isolation { description "Feature Congestion Isolation"; } /*--------------------*/ /* Typedefs */ /*--------------------*/ typedef abs-traffic-class-plus-one-type { type enumeration { enum monitored-queue-tc-1 { value 1; description "Traffic class 0 of monitored queue."; } enum monitored-queue-tc-2 { value 2; description "Traffic class 1 of monitored queue."; } enum monitored-queue-tc-3 { value 3; description "Traffic class 2 of monitored queue."; } enum monitored-queue-tc-4 { value 4; description "Traffic class 3 of monitored queue."; } enum monitored-queue-tc-5 { value 5; description "Traffic class 4 of monitored queue."; } enum monitored-queue-tc-6 { value 6; description "Traffic class 5 of monitored queue."; } enum monitored-queue-tc-7 { value 7; description "Traffic class 6 of monitored queue."; } enum monitored-queue-tc-8 { value 8; description "Traffic class 7 of monitored queue."; } enum congesting-queue-tc-1 { value -1; description "Traffic class 0 of congesting queue."; } enum congesting-queue-tc-2 { value -2; description "Traffic class 1 of congesting queue."; } enum congesting-queue-tc-3 { value -3; description "Traffic class 2 of congesting queue."; } enum congesting-queue-tc-4 { value -4; description "Traffic class 3 of congesting queue."; } enum congesting-queue-tc-5 { value -5; description "Traffic class 4 of congesting queue."; } enum congesting-queue-tc-6 { value -6; description "Traffic class 5 of congesting queue."; } enum congesting-queue-tc-7 { value -7; description "Traffic class 6 of congesting queue."; } enum congesting-queue-tc-8 { value -8; description "Traffic class 7 of congesting queue."; } enum not-participating-congestion-isolation { value 0; description "Traffic class not participating in congestion isolation."; } } description "Specifies a value that can be translated to the numeric value of the traffic class to be used as either the congesting or monitored queue. The absolute value of the enumerated value is the value of the traffic class plus 1. A value of 0 indicates the traffic class is not participating in congestion isolation. For example, the enumerated value congesting-queue-tc-5 specifies that traffic class 4 is used as the congesting queue."; } grouping cip-port-parameters { description "The bridge port specific configuration for Congestion Isolation."; leaf cip-mac-address { type ieee:mac-address; config false; description "The source MAC address of a CIM, belonging to the system transmitting the CIM."; reference "49.4.1.2.1 of IEEE Std 802.1Q"; } leaf cip-ipv4-address { type inet:ipv4-address; config false; description "The source IPv4 address of a CIM, belonging to the system transmitting the IPv4 layer-3 CIM."; reference "49.4.1.2.2 of IEEE Std 802.1Q"; } leaf cip-ipv6-address { type inet:ipv6-address; config false; description "The source IPv6 address of a CIM, belonging to the system transmitting the IPv6 layer-3 CIM."; reference "49.4.1.2.3 of IEEE Std 802.1Q"; } leaf cip-cim-port { type inet:port-number; config false; description "The UDP port number to be used by a peer transmitting a layer-3 CIM. This value will be sent to the peer via LLDP in the CI TLV."; reference "49.4.1.2.4 of IEEE Std 802.1Q"; } list queue-map { key "priority"; description "An array of integers, one entry for each traffic class, 0 through 7, specifying a value that can be translated to the numeric value of the traffic class to be used as either the congesting traffic class or the monitored traffic class for the traffic class specified by the index. The integers range in value from -8 to 8. A value of 0 in the table specifies that the traffic class is not participating in congestion isolation. A positive number specifies a traffic class for a monitored queue that is one less than the value (e.g., a value of 5 represents traffic class 4). A negative number specifies a traffic class for a congesting queue that is one less than the absolute value (e.g., a value of -4 represents traffic class 3)."; reference "49.4.1.2.5 of IEEE Std 802.1Q"; leaf priority { type dot1q-types:priority-type; description "There are eight values of Priority that map to an absolute value that is a traffic class plus one, or the value 0 which indicates the traffic class is not used by congestion isolation."; reference "49.4.1.2.5 of IEEE Std 802.1Q"; } leaf abs-traffic-class-plus-one { type abs-traffic-class-plus-one-type; description "A value that can be translated to represent a traffic class or an indication of non-use. A value of 0 specifies that the traffic class is not participating in congestion isolation. A positive number specifies a traffic class for a monitored queue, and a negative number specifies a traffic class for a congesting queue."; reference "49.4.1.2.5 of IEEE Std 802.1Q"; } } leaf min-header-octets { type uint16; description "The minimum number of octets to include in the Encapsulated MSDU field of each CIM generated. The default value is 48."; reference "49.4.1.2.6 of IEEE Std 802.1Q"; } leaf max-cim-tx { type uint16; description "The maximum number of times a CIM PDU will be sent for a congesting flow. The default value is 3."; reference "49.4.1.2.7 of IEEE Std 802.1Q"; } } grouping cip-parameters { description "The system specific configuration for Congestion Isolation."; leaf ci-master-enable { type boolean; description "Specifies whether CI is enabled in this system."; reference "49.4.1.1.1 of IEEE Std 802.1Q"; } leaf ci-cim-tx-priority { type dot1q-types:priority-type; config false; description "Specifies the priority value to be used when transmitting CIMs from the system. The default is 6."; reference "49.4.1.1.2 of IEEE Std 802.1Q"; } leaf ci-max-flow-life { type uint32; config false; description "Specifies the maximum number of centiseconds that a congesting flow entry, created by the receipt of a CIM, can remain in the CI Stream Table after the congesting queue has transitioned from congested back to non-congested. The default value is 100."; reference "49.4.1.1.3 of IEEE Std 802.1Q"; } container ci-peers { description "Contains information about an immediate peer obtained from a received LLDP Congestion Isolation TLV."; list ci-peer-table { key "reception-port"; description "Contains entries for each participating immediate peer and provides the information needed to generate a CIM for transmission to the peer."; reference "49.3.6 of IEEE Std 802.1Q"; leaf reception-port { type dot1q-types:port-number-type; description "The port number where the immediate congestion isolation participating peer is attached."; reference "49.3.6 of IEEE Std 802.1Q"; } leaf cim-type { type enumeration { enum l2 { description "Layer 2 CIM encapsulation."; } enum ipv4 { description "IPv4 CIM encapsulation."; } enum ipv6 { description "IPv6 CIM encapsulation."; } } description "The format of the CIM expected by the peer."; reference "49.3.6 of IEEE Std 802.1Q"; } leaf peer-mac-address { type ieee:mac-address; description "The destination MAC address to use when generating a CIM for the peer."; reference "49.3.6 of IEEE Std 802.1Q"; } leaf peer-ipv4-address { type inet:ipv4-address; description "The destination IPv4 address to use when generating an IPv4 layer-3 CIM for the peer."; reference "49.3.6 of IEEE Std 802.1Q"; } leaf peer-ipv6-address { type inet:ipv6-address; description "The destination IPv6 address to use when generating an IPv6 layer-3 CIM for the peer."; reference "49.3.6 of IEEE Std 802.1Q"; } leaf peer-udp-port { type inet:port-number; description "The UDP port number to use when generating a layer-3 CIM for the peer."; reference "49.3.6 of IEEE Std 802.1Q"; } leaf peer-cim-encap-len { type uint16 { range "0..512"; } description "The number of octets from the MSDU to include in the Encapsulated MSDU field of the CIM PDU"; reference "49.3.6 of IEEE Std 802.1Q"; } } leaf max-ci-peer-entries { type uint32; config false; description "Specifies the maximum number of CI peer entries that can be stored."; reference "49.3.6 of IEEE Std 802.1Q"; } } container ci-streams { description "Contains control information to manage congestion flows."; list ci-stream-table { key "stream-handle-id"; config false; description "Contains entries for each congesting flow and has a 1:1 mapping to entries in the IEEE Std 802.1CB Stream Identity Table."; reference "49.3.7 of IEEE Std 802.1Q"; leaf stream-handle-id { type uint32; config false; description "There is a unique stream handle ID for each congesting flow stored in the CI Stream Table."; reference "49.4.1.5.1 of IEEE Std 802.1Q"; } leaf cim-count { type uint16; config false; description "Contains a count of the number of CIMs sent for a congesting flow."; reference "49.4.1.5.2 of IEEE Std 802.1Q"; } leaf create-time { type yang:timeticks; config false; description "The time (SysUpTime, IETF RFC 3418) at which the CI Stream Table entry was created."; reference "49.4.1.5.3 of IEEE Std 802.1Q"; } leaf create-mask { type bits { bit local-create { position 0; description "CI Stream entry was created because congestion was detected locally by the AQM."; } bit cim-create { position 1; description "CI Stream entry was created because of the receipt of a CIM."; } } config false; description "Indicates the reason for creating or updating the CI Stream Table entry. The LSB indicates that the entry was created or updated because the AQM determined that a forwarded frame is part of a congesting flow. The MSB indicates that the entry was created or updated because of the receipt of a CIM."; reference "49.4.1.5.4 of IEEE Std 802.1Q"; } } leaf queue-key { type uint16; config false; description "Represents the unique queue identity of a congesting queue at an egress port that a congesting flow is traversing. The key is calculated by the product of the congesting traffic class number plus one and the port number."; reference "49.4.1.5.5 of IEEE Std 802.1Q"; } leaf dest-mac-address { type ieee:mac-address; config false; description "The destination MAC address of a congesting flow."; reference "49.4.1.5.6 of IEEE Std 802.1Q"; } leaf source-mac-address { type ieee:mac-address; config false; description "The source MAC address of a congesting flow."; reference "49.4.1.5.7 of IEEE Std 802.1Q"; } leaf vid { type dot1q-types:vlan-index-type; config false; description "The VID of a congesting flow."; reference "49.4.1.5.8 of IEEE Std 802.1Q"; } leaf msdu { type yang:hex-string; config false; description "The initial octets of the MSDU of a congesting flow. The number of octets to keep in the CI Stream Table entry is specified by the peer CIM encapsulation length of the CI Peer Table."; reference "49.4.1.5.9 of IEEE Std 802.1Q"; } } leaf max-ci-stream-entries { type uint32; config false; description "Specifies the maximum number of CI stream entries that can be stored."; reference "49.4.1.5 of IEEE Std 802.1Q"; } } /*--------------------*/ /* Configuration Data */ /*--------------------*/ uses sfsg:sfsg-parameters { augment "stream-filters/stream-filter-instance-table/stream-handle-spec" { if-feature "congestion-isolation"; description "Dot1q Congestion Isolation"; case null-handle { description "Congestion isolation specific stream_handle specifications."; leaf null-handle { type empty; description "The stream_handle specification represents the value when no stream_handle is provided."; } } } } }