队头阻塞(Head-of-line blocking或缩写为HOL blocking)在
计算机网络的范畴中是一种性能受限的现象。它的原因是一列的第一个数据包(队头)受阻而导致整列数据包受阻。例如它有可能在缓存式输入的交换机中出现,有可能因为传输顺序错乱而出现,亦有可能在HTTP流水线中有多个请求的情况下出现。
一个交换机有可能由缓存式输入端口、交换架构以及缓存式的输出端口所组成。如果在输入端口处使用了
先进先出(FIFO)的策略,那么就只有最先进入的数据包可以被处理。而此时如果最先进入的数据包由于目标输出端口正忙而无法被处理的话,那么更晚到达的数据包就没有办法被处理(即便是更晚到达的数据包的目标输出端口并没有处于忙碌的状态)。输出正忙的情况有:
如果没有队头阻塞的话,新到达的数据包就有可能绕开被阻碍的数据包而被导向它们各自的(没有处于阻塞状态的)目标输出端口了。这种现象有可能在缓存式输入的系统中对性能造成极大的影响。
解决这个问题的其中一个方法是使用虚拟输出队列。只有在缓存式输入的交换机中才会出现队头阻塞的情况。如果交换机内部的带宽足够的话,缓存输入就是没有必要的了——所有的缓存都可以在输出处被处理,从而也避免了队头阻塞。这样的无缓存式输入架构在中小型规模的
以太网交换机中非常常见。