Head-of-line blocking (HOL blocking) in networking is a performance issue that occurs when a bunch of packets is blocked by the first packet in line. It can happen specially in input buffered network switches where out-of-order delivery of packets can occur. A switch can be composed of input buffered ports, output buffered ports and switch fabric.
When first-in first-out input buffers are used, only the first received packet is prepared to be forwarded. All packets received afterwards are not forwarded if the first one cannot be forwarded. That is basically what HOL blocking really is.If there’s no HOL blocking happening, arrived packets have the chance to be forwarded around the stuck packet. All non-blocking switched should be smart enough to get through with this kind of network phenomenon.
Why it happens?
It happens when for a packet its destination output port is busy. The output is occupied if there is output contention or output congestion.
- Contention in this case is the situation where two or more input flows want to be forwarded to single output at the same time.
- Output congestion happens when the output buffer is full. Output buffer can be filled up if packets input rate exceeds the output rate.
HOL can significantly increase packet reordering.
Overcoming HOL blocking
One way to do it is to use Virtual Output Queues. The thing to note here is that only switch with input buffering suffers from HOL blocking. If the switch is non-blocking it means that is a switch which sufficient internal bandwidth makes input buffering unnecessary. All buffering will be done at outputs and HOL blocking is gone. This no-input-buffering architecture is common in small to medium-sized Ethernet switches.