Types of Flow Control: LFC vs. PFC
Ethernet supports two flow control mechanisms:
- Link-level Flow Control (LFC): Pauses all traffic on a link
- Priority Flow Control (PFC): Allows selective pausing of traffic based on priority, enabling better QoS for mixed workloads.
Both types use Xon/Xoff pause frames to control data transmission. The primary difference is that LFC pauses all traffic on a link, but PFC supports Quality-of-Service (QoS) by defining different traffic priorities that can be individually paused. PFC therefore offers greater flexibility when running multiple traffic streams
Although LFC is termed "link-level", both LFC and PFC function at OSI Layer 2 (Data Link Layer). LFC vs. PFC Comparison
| | LFC | PFC |
|---|
| Standard | IEEE 802.3x (1997) | IEEE 802.1Qbb (2011) |
| Pause Type | Global pause (all traffic) - pauses the entire link, affecting all traffic on that link. If a link carries multiple traffic streams, a high-flow stream can cause the link to pause, thereby blocking ALL streams. | Priority pause (per traffic class) - defines eight priorities that can be individually paused. High-bandwidth applications can be paused while allowing low-bandwidth applications to continue running. |
| Traffic Shaping | None. | Supports traffic classes, priorities, bandwidth allocation, and other QoS features. |
| Ease of Setup | Simple. Turn on Tx/Rx flow control on both the adapter and switch. | Requires detailed configuration. Priorities, traffic classes, bandwidth allocations, and willing/non-willing mode must be configured on the adapter, switch, or both. |
PFC and LFC are mutually exclusive. Only one type at a time can be enabled on a device.
- PFC is generally recommended. It has greater flexibility to handle multiple traffic streams and enhanced QoS capabilities.
- LFC can be used in situations where there are no differentiated classes of traffic. It is usually used for testing purposes for RDMA.