PFC Queue Limits (Queue Depth/Size)
LAN Based Cards Queue Depths
Applicable to the LAN based cards such as the ws-x6708, ws-6724, etc, these cards have hardware queues both ingress and egress, each port has limited buffer space and may require reallocating buffer space between the queues. Using the ws-6724 as an example where the egress queue structure is 1p3q8t, meaning that there is 1 priority queue and 3 standard queues we will reapportion the default allocated buffer space to each queue. Firstly the total amount of space for on egress for a port on this card is 1.2MB (note: MegaBytes) which can be found in the 12.2SR configuration guide under the Configure QoS section, under Module to Queue Type Mappings.
Keep in mind that increasing a queue size (length) can introduce more latency due to more buffering, where smaller buffers can cause drops and therefore lost data (UDP) or retransmits (TCP). TCP drops / windows can be controlled by using WRED (wrr-queue random-detect) instead of the default queue management – tail drop, WRED still drops UDP as the drop management uses COS values and is does not look at the type of packet being carried, so UDP being dropped means lost data (unless application checks for missing data) and TCP will retransmit and will shorten window size.
The commands we use to configure the queue sizes are
priority-queue queue-limit
wrr-queue queue-limit
The priority-queue command is not available for all LAN cards, cards with queue structures, check the configuration guides for the cards you are using.
So we will allocate the following:
PQ – 10%
Q1 – 20%
Q2 – 30%
Q4 – 40%
The values entered are relative values and can be anything, a calculation below will show how this works, but for ease just define these as percentages as follows:
priority-queue queue-limit 10
wrr-queue queue-limit 20 30 40
so to calculate what is actually being assigned, using the PQ as an example
10 / (10+20+30+40) = 0.1
0.1 * 100 = 10% (PQ)
and 10% of 1.2 MB is 120KB
The outcome is 10% or 120KB (KiloBytes) as expected as we used percentages for the inputs to the commands, using relative values and this calculation will give you the queue percentages is you decide to use them.
In IOS to check your work use the following commands:
show queueing interface G1/1
remote command switch show qm port X Y (where x = slot, y = port number)