Types of Flow Control: LFC vs. PFC
Ethernet standards define two types of flow control:
- Link-level Flow Control (LFC)
- Priority Flow Control (PFC)
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
Despite LFC being called link-level flow control, both LFC and PFC operate at the data link level (OSI Layer 2). LFC vs. PFC Comparison
| LFC | PFC |
---|
Standard | IEEE 802.3x (1997) | IEEE 802.1Qbb (2011) |
Pause Type | Global pause - 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 - 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 | Straightforward. Turn on Tx/Rx flow control on both the adapter and switch. | More complicated. 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.