Priority Flow Control (PFC), estandarizado como IEEE 802.1Qbb, es una extensión del control de flujo Ethernet (IEEE 802.3x) que opera a nivel de enlace de datos (Capa 2). A diferencia del control de flujo tradicional que pausa todo el tráfico en un enlace, PFC permite la pausa selectiva de tramas para clases de servicio (CoS) o prioridades específicas, definidas por el campo Priority Code Point (PCP) en la cabecera VLAN (IEEE 802.1Q). Cuando un puerto de switch experimenta congestión para una CoS particular, puede enviar un mensaje PAUSE a su par para esa CoS específica, deteniendo temporalmente la transmisión de ese tipo de tráfico mientras permite que otras clases de tráfico continúen fluyendo sin interrupción. Esto es crucial para garantizar la entrega sin pérdidas de tráfico sensible a la congestión.
PFC es fundamental en entornos donde la pérdida de paquetes es inaceptable y el rendimiento determinista es crítico. Su implementación más prominente es en redes Data Center Bridging (DCB) y, específicamente, en redes Fibre Channel over Ethernet (FCoE). En FCoE, PFC es esencial para garantizar la entrega sin pérdidas del tráfico Fibre Channel encapsulado, lo que es un requisito estricto para las operaciones de almacenamiento. También se utiliza en redes de almacenamiento convergentes (Converged Enhanced Ethernet - CEE) y en infraestructuras de computación de alto rendimiento (HPC) que emplean RDMA over Converged Ethernet (RoCEv2), donde la pérdida de paquetes puede degradar severamente el rendimiento y la latencia de las aplicaciones distribuidas. Fabricantes como Cisco (con sus switches Nexus), Juniper (con sus series QFX) y Arista (con sus plataformas 7000) implementan PFC en sus equipos de red para soportar estas cargas de trabajo.
Para el arquitecto de sistemas, PFC es un componente clave al diseñar redes de baja latencia y alta fiabilidad, especialmente aquellas que convergen tráfico de almacenamiento y computación. La decisión de implementar PFC implica considerar la complejidad de la configuración de Quality of Service (QoS) y la gestión de clases de tráfico. Un trade-off importante es que, si bien PFC previene la pérdida de paquetes, puede introducir 'head-of-line blocking' si una clase de tráfico pausada bloquea recursos que otras clases podrían usar, afectando la latencia general. Es vital diseñar cuidadosamente las políticas de CoS y los tamaños de búfer para evitar que una congestión localizada se propague. La correcta implementación de PFC es crítica para garantizar el rendimiento determinista de aplicaciones como bases de datos distribuidas, sistemas de almacenamiento y clústeres de HPC, donde la pérdida de paquetes puede tener un impacto catastrófico en la consistencia y el rendimiento.