Understanding CoS Scheduling Behavior and Configuration Considerations
Many factors affect scheduling configuration and bandwidth requirements, including:
-
When you configure bandwidth for a forwarding class (each forwarding class is mapped to a queue) or a forwarding class set (priority group), the switch considers only the data as the configured bandwidth. The switch does not account for the bandwidth consumed by the preamble and the interframe gap (IFG). Therefore, when you calculate and configure the bandwidth requirements for a forwarding class or for a forwarding class set, consider the preamble and the IFG as well as the data in the calculations.
-
When you configure a forwarding class to carry traffic on the switch (instead of using only default forwarding classes), you must also define a scheduling policy for the user-configured forwarding class. Some switches support enhanced transmission selection (ETS) hierarchical port scheduling, some switches support port scheduling, and some switches support both methods of scheduling.
Note:Use Feature Explorer to confirm platform and release support for ETS and port scheduling.
For ETS hierarchical port scheduling, defining a hierarchical scheduling policy using ETS means:
-
Mapping a scheduler to the forwarding class in a scheduler map
-
Including the forwarding class in a forwarding class set
-
Associating the scheduler map with a traffic control profile
-
Attaching the traffic control profile to a forwarding class set and an interface
On switches that support port scheduling, defining a scheduling policy means:
-
Mapping a scheduler to the forwarding class in a scheduler map.
-
Applying the scheduler map to one or more interfaces.
-
-
On each physical interface, either all forwarding classes that are being used on the interface must have rewrite rules configured, or no forwarding classes that are being used on the interface can have rewrite rules configured. On any physical port, do not mix forwarding classes with rewrite rules and forwarding classes without rewrite rules.
-
For packets that carry both an inner VLAN tag and an outer VLAN tag, rewrite rules rewrite only the outer VLAN tag.
-
For ETS hierarchical port scheduling, configuring the minimum guaranteed bandwidth (
transmit-rate
) for a forwarding class does not work unless you also configure the minimum guaranteed bandwidth (guaranteed-rate
) for the forwarding class set in the traffic control profile.Additionally, the sum of the transmit rates of the forwarding classes in a forwarding class set should not exceed the guaranteed rate for the forwarding class set. (You cannot guarantee a minimum bandwidth for the queues that is greater than the minimum bandwidth guaranteed for the entire set of queues.) If you configure transmit rates whose sum exceeds the guaranteed rate of the forwarding class set, the commit check fails and the system rejects the configuration.
-
For ETS hierarchical port scheduling, the sum of the forwarding class set guaranteed rates cannot exceed the total port bandwidth. If you configure guaranteed rates whose sum exceeds the port bandwidth, the system sends a syslog message to notify you that the configuration is not valid. However, the system does not perform a commit check. If you commit a configuration in which the sum of the guaranteed rates exceeds the port bandwidth, the hierarchical scheduler behaves unpredictably.
-
For ETS hierarchical port scheduling, if you configure the
guaranteed-rate
of a forwarding class set as a percentage, configure all of the transmit rates associated with that forwarding class set as percentages. In this case, if any of the transmit rates are configured as absolute values instead of percentages, the configuration is not valid and the system sends a syslog message. -
There are several factors to consider if you want to configure a strict-high priority queue (forwarding class):
-
On QFX5200 switches you can configure only one strict-high priority queue (forwarding class).
On QFX5100 and EX4600 switches, you can configure only one forwarding-class-set (priority group) as strict-high priority. All queues which are part of that strict-high forwarding class set then act as strict-high queues.
On QFX10000 switches, there is no limit to the number of strict-high priority queues you can configure.
-
You cannot configure a minimum guaranteed bandwidth (
transmit-rate
) for a strict-high priority queue on QFX5200, QFX5100, EX4600 switches.On QFX5200 and QFX10000 switches, you can set the
transmit-rate
on strict-high priority queues to set a limit on the amount of traffic that the queue treats as strict-high priority traffic. Traffic in excess of thetransmit-rate
is treated as best-effort traffic, and receives an excess bandwidth sharing weight of “1”, which is the proportion of extra bandwidth the strict-high priority queue can share on the port. Queues that are not strict-high priority queues use the transmit rate (default) or the configured excess rate to determine the proportion (weight) of extra port bandwidth the queue can share. However, you cannot configure an excess rate on a strict-high priority queue, and you cannot change the excess bandwidth sharing weight of “1” on a strict-high priority queue.For ETS hierarchical port scheduling, you cannot configure a minimum guaranteed bandwidth (
guaranteed-rate
) for a forwarding class set that includes a strict-high priority queue. -
Except on QFX10000 switches, for ETS hierarchical port scheduling only, you must create a separate forwarding class set for a strict-high priority queue. On QFX10000 switches, you can mix strict-high priority and low priority queues in the same forwarding class set.
-
Except on QFX10000 switches, for ETS hierarchical port scheduling, only one forwarding class set can contain a strict-high priority queue. On QFX10000 switches, this restriction does not apply.
-
Except on QFX10000 switches, for ETS hierarchical port scheduling, a strict-high priority queue cannot belong to the same forwarding class set as queues that are not strict-high priority. (You cannot mix a strict-high priority forwarding class with forwarding classes that are not strict-high priority in one forwarding class set.) On QFX10000 switches, you can mix strict-high priority and low priority queues in the same forwarding class set.
-
For ETS hierarchical port scheduling on switches that use different forwarding class sets for unicast and multidestination (multicast, broadcast, and destination lookup fail) traffic, a strict-high priority queue cannot belong to a multidestination forwarding class set.
-
On QFX10000 systems, we recommend that you always configure a transmit rate on strict-high priority queues to prevent them from starving other queues. If you do not apply a transmit rate to limit the amount of bandwidth strict-high priority queues can use, then strict-high priority queues can use all of the available port bandwidth and starve other queues on the port.
On QFX5200, QFX5100, EX4600 switches, we recommend that you always apply a shaping rate to the strict-high priority queue to prevent it from starving other queues. If you do not apply a shaping rate to limit the amount of bandwidth a strict-high priority queue can use, then the strict-high priority queue can use all of the available port bandwidth and starve other queues on the port.
-
-
For transmit rates below 1 Gbps, we recommend that you configure the transmit rate as a percentage instead of as a fixed rate. This is because the system converts fixed rates into percentages and might round small fixed rates to a lower percentage. For example, a fixed rate of 350 Mbps is rounded down to 3 percent instead of 3.5 percent.
-
When you set the maximum bandwidth for a queue or for a priority group (
shaping-rate
) at 100 Kbps or lower, the traffic shaping behavior is accurate only within +/– 20 percent of the configuredshaping-rate
. -
On QFX10000 switches, configuring rate shaping (
[set class-of-service schedulers scheduler-name transmit-rate (rate | percentage) exact
) on a LAG interface using the[edit class-of-service interfaces lag-interface-name scheduler-map scheduler-map-name
] statement can result in scheduled traffic streams receiving more LAG link bandwidth than expected.You configure rate shaping in a scheduler to set the maximum bandwidth for traffic assigned to a forwarding class on a particular output queue on a port. For example, you can use a scheduler to configure rate shaping on traffic assigned to the best-effort forwarding class mapped to queue 0, and then apply the scheduler to an interface using a scheduler map, to set the maximum bandwidth for best-effort traffic mapped to queue 0 on that port. Traffic in the best-effort forwarding can use no more than the amount of port bandwidth specified by the transmit rate when you use the
exact
option.LAG interfaces are composed of two or more Ethernet links bundled together to function as a single interface. The switch can hash traffic entering a LAG interface onto any member link in the LAG interface. When you configure rate shaping and apply it to a LAG interface, the way that the switch applies the rate shaping to traffic depends on how the switch hashes the traffic onto the LAG links.
To illustrate how link hashing affects the way the switch applies a shaping rate to LAG traffic, let’s look at a LAG interface (
ae0
) that has two member links (xe-0/0/20
andxe-0/0/21
). On LAGae0
, we configure rate shaping of2g
for traffic assigned to thebest-effort
forwarding class, which is mapped to output queue0
. When traffic in thebest-effort
forwarding class reaches the LAG interface, the switch hashes the traffic onto one of the two member links.If the switch hashes all of the
best-effort
traffic onto the same LAG link, the traffic receives a maximum of 2g bandwidth on that link. In this case, the intended cumulative limit of 2g for best-effort traffic on the LAG is enforced.However, if the switch hashes the
best-effort
traffic onto both of the LAG links, the traffic receives a maximum of 2g bandwidth on each LAG link, not 2g as a cumulative total for the entire LAG, so the best-effort traffic receives a maximum of 4g on the LAG, not the 2g set by the rate shaping configuration. When hashing spreads the traffic assigned to an output queue (which is mapped to a forwarding class) across multiple LAG links, the effective rate shaping (cumulative maximum bandwidth) on the LAG is:(number of LAG member interfaces) x (rate shaping for the output queue) = cumulative LAG rate shaping
-
On switches that do not use virtual output queues (VOQs), ingress port congestion can occur during periods of egress port congestion if an ingress port forwards traffic to more than one egress port, and at least one of those egress ports experiences congestion. If this occurs, the congested egress port can cause the ingress port to exceed its fair allocation of ingress buffer resources. When the ingress port exceeds its buffer resource allocation, frames are dropped at the ingress. Ingress port frame drop affects not only the congested egress ports, but also all of the egress ports to which the congested ingress port forwards traffic.
If a congested ingress port drops traffic that is destined for one or more uncongested egress ports, configure a weighted random early detection (WRED) drop profile and apply it to the egress queue that is causing the congestion. The drop profile prevents the congested egress queue from affecting egress queues on other ports by dropping frames at the egress instead of causing congestion at the ingress port.
Note:On systems that support lossless transport, do not configure drop profiles for lossless forwarding classes such as the default
fcoe
andno-loss
forwarding classes. FCoE and other lossless traffic queues require lossless behavior. Use priority-based flow control (PFC) to prevent frame drop on lossless priorities. -
On systems that use different classifiers for unicast and multidestination traffic and that support lossless transport, on an ingress port, do not configure classifiers that map the same IEEE 802.1p code point to both a multidestination traffic flow and a lossless unicast traffic flow (such as the default lossless
fcoe
orno-loss
forwarding classes). Any code point used for multidestination traffic on a port should not be used to classify unicast traffic into a lossless forwarding class on the same port.If a multidestination traffic flow and a lossless unicast traffic flow use the same code point on a port, the multidestination traffic is treated the same way as the lossless traffic. For example, if priority-based flow control (PFC) is applied to the lossless traffic, the multidestination traffic of the same code point is also paused. During periods of congestion, treating multidestination traffic the same as lossless unicast traffic can create ingress port congestion for the multidestination traffic and affect the multidestination traffic on all of the egress ports the multidestination traffic uses.
For example, the following configuration can cause ingress port congestion for the multidestination flow:
For unicast traffic, IEEE 802.1p code point 011 is classified into the
fcoe
forwarding class:user@switch# set class-of-service classifiers ieee-802.1 ucast_cl forwarding-class fcoe loss-priority low code-points 011
For multidestination traffic, IEEE 802.1p code point
011
is classified into themcast
forwarding class:user@switch# set class-of-service classifiers ieee-802.1 mcast-cl forwarding-class mcast loss-priority low code-points 011
The unicast classifier that maps traffic with code point
011
to thefcoe
forwarding class is mapped to interfacexe-0/0/1
:user@switch# set class-of-service interfaces xe-0/0/1 unit 0 classifiers ieee-802.1 ucast_cl
The multidestination classifier that maps traffic with code point
011
to themcast
forwarding class is mapped to all interfaces (multidestination traffic maps to all interfaces and cannot be mapped to individual interfaces):user@switch# set class-of-service multi-destination classifiers ieee-802.1 mcast-cl
Because the same code point (
011
) maps unicast traffic to a lossless traffic flow and also maps multidestination traffic to a multidestination traffic flow, the multidestination traffic flow might experience ingress port congestion during periods of congestion.
To avoid ingress port congestion, do not map the code point used by the multidestination traffic to lossless unicast traffic. For example:
Instead of classifying code point
011
into thefcoe
forwarding class, classify code point011
into thebest-effort
forwarding class:user@switch# set class-of-service classifiers ieee-802.1 ucast_cl forwarding-class best-effort loss-priority low code-points 011
-
user@switch# set class-of-service classifiers ieee-802.1 mcast-cl forwarding-class mcast loss-priority low code-points 011
-
user@switch# set class-of-service interfaces xe-0/0/1 unit 0 classifiers ieee-802.1 ucast_cl
user@switch# set class-of-service multi-destination classifiers ieee-802.1 mcast-cl
Because the code point
011
does not map unicast traffic to a lossless traffic flow, the multidestination traffic flow does not experience ingress port congestion during periods of congestion.
The best practice is to classify unicast traffic with IEEE 802.1p code points that are also used for multidestination traffic into best-effort forwarding classes.