Understanding Basic InfiniBand QoS
The InfiniBand architecture defined by IBTA includes Quality of Service and Congestion Control features that are tailored perfectly to the needs of Data Center Networks. Through use of features available today in InfiniBand Architecture based hardware devices, InfiniBand can address QoS requirements in Data Center applications in an efficient and simpler way, better than any other interconnect technology available today.
Â
When starting to play around InfiniBand QoS, you will need to understand two basic concepts.
Service levels (SLs) and Virtual Lanes (VLs).
Basic Concepts
Service Level (SL)
A field in the Local Routing Header (LRH) which defines the requested QoS. It permits a packet to operate at one of 16 SLs. Assignment of SLs is a function of each node’s communication manager (CM) and its negotiation with the SM.
Virtual Lane (VL)
Virtual lanes provide a mechanism for creating multiple channels within a single physical link.
Each VL uses different buffer
In the standard there are 16 possible VLs.
VLs 0-14 –used for traffic (0-7 are the only VLs that are currently implemented by Mellanox switches)
VL 15 –used for management traffic only
SL to VL mapping allows QoS implementation.
OpenSM Parameters
OpenSM configuration file has a set of QoS parameters, that are used to configure SL2VL mapping and VL arbitration.
qos - admin mode for enabling/disabling QoS: True/False (default false)
# Enable QoS setup
qos TRUE
Â
Default Global parameters
qos_max_vls - the maximum number of VLs on the subnet
qos_high_limit - The limit of high priority component of VL arbitration table. High-limit indicates the number of high-priority packets that can be transmitted without an opportunity to send a low-priority packet. A value of 255 indicates that the limit is unbounded. If the 255 value is used, the low priority VLs may be starved. A value of 0 indicates that only a single packet from the high-priority table may be sent before an opportunity is given to the low-priority table, which basically means that there is no real high priority VL. If the high-priority VLs do not have an available packet for transmission, a packet may be sent from the low-priority VLs.
qos_vlarb_high - High priority VL arbitration table. This is a list of VL/weight pairs, where each list entry contains:
VL number (range 0-14)
Weight value (range 0-255) – the number of 64-byte units which may be transmitted from that VL when its turn in the arbitration occurs. A weight of 0 indicates that this entry should be skipped.
qos_vlarb_low - Low priority VL arbitration table. This is a list of VL/weight pairs, where each list entry contains:
VL number (range 0-14)
Weight value (range 0-255) – the number of 64-byte units which may be transmitted from that VL when its turn in the arbitration occurs. A weight of 0 indicates that this entry should be skipped.
qos_sl2vl - SL2VL Mapping table: It is a list of VLs corresponding to SLs 0-15.
Position is the SL number
Numeric value is the VL number
For example:
qos_max_vls 2 - We will have 2 VLs on the subnet.
qos_high_limit 255 - We have strict priority example. High priority VLs will always be sent before low priority VLs.
qos_vlarb_high 1:192, 2:128, 3:64 - means that there are 3 high priority VLs while the arbiter will perform weighted round robin among them with the wight of 192, 128, 64 per SLs 1,2 and 3.
qos_vlarb_low 0:1 - low priority SL 0 can send one 64*64 byte (=4096 byte) unit and after that check if there other high priority SLs.
Note: default InfiniBand MTU is 4KB. A single packet of MTU size, will require 64 units of 64 bytes. weight values for each VL should be multiples of 64.
qos_sl2vl 0,1,2,3 - 4 SLs are mapped to 4 VLs. you can map more than one SL to the same VL.
Â
# QoS default options
qos_max_vls 4
qos_high_limit 255
qos_vlarb_high 1:192, 2:128, 3:64
qos_vlarb_low 0:64
qos_sl2vl 0,1,2,3
Â
Â
Â