Head-of-line blocking

This occurs, for example, in input-buffered network switches, out-of-order delivery and multiple requests in HTTP pipelining.

If the oldest packet cannot be transmitted due to its target output being busy, then more recent arrivals cannot be forwarded.

Without HOL blocking, the new arrivals could potentially be forwarded around the stuck oldest packet to their respective destinations.

For FIFO input buffers, a simple model of fixed-sized cells to uniformly distributed destinations, causes the throughput to be limited to 58.6% of the total as the number of links becomes large.

[12][13] Without changing the stream abstraction, reducing packet loss can reduce the harm from head-of-line blocking; an alternative is to implement the reliable byte stream using forward error correction to send redundant data so that a certain amount of loss can be tolerated without incurring retransmissions.

Head-of-line blocking example: The 1st and 3rd input flows are competing to send packets to the same output interface. In this case if the switching fabric decides to transfer the packet from the 3rd input flow, the 1st input flow cannot be processed in the same time slot. Note that the 1st input flow is blocking a packet for output interface 3, which is available for processing.