# Weighted fair queuing

Weighted fair queuing (WFQ) is a data packet scheduling technique allowing different scheduling priorities to statistically multiplexed data flows.

WFQ is a generalization of fair queuing (FQ). Both in WFQ and FQ, each data flow has a separate FIFO queue. In FQ, with a link data rate of ${\displaystyle R}$, at any given time the ${\displaystyle N}$ active data flows (the ones with non-empty queues) are serviced simultaneously, each at an average data rate of ${\displaystyle R/N}$. Since each data flow has its own queue, an ill-behaved flow (who has sent larger packets or more packets per second than the others since it became active) will only punish itself and not other sessions.

As opposed to FQ, WFQ allows different sessions to have different service shares. If ${\displaystyle N}$ data flows currently are active, with weights ${\displaystyle w_{1},w_{2}...w_{N},}$ data flow number ${\displaystyle i}$ will achieve an average data rate of

${\displaystyle {\frac {Rw_{i}}{(w_{1}+w_{2}+...+w_{N})}}}$

It can be proven that when using a network with WFQ switches and a data flow that is leaky bucket constrained, an end-to-end delay bound can be guaranteed.[1] By regulating the WFQ weights dynamically, WFQ can be utilized for controlling the quality of service, for example to achieve guaranteed data rate.

Proportional fairness can be achieved by setting the weights to ${\displaystyle w_{i}=1/c_{i}}$, where ${\displaystyle c_{i}}$ is the cost per data bit of data flow ${\displaystyle i}$. For example in CDMA spread spectrum cellular networks, the cost may be the required energy (the interference level), and in dynamic channel allocation systems, the cost may be the number of nearby base station sites that can not use the same frequency channel, in view to avoid co-channel interference.