sFlow.org Peter Phaal http://www.sflow.org/ InMon Corp. info@sflow.org Anoop Ghanwani Dell Inc. March 2016 sFlow Priority Flow Control Structures Copyright Notice Copyright (C) sFlow.org (2026). All Rights Reserved. Abstract This memo describes sFlow version 5 structures for exporting priority flow control counters from Ethernet interfaces. Table of Contents 1. Overview ...................................................... 1 2. Discussion .................................................... 1 3. sFlow Datagram Extensions ..................................... 2 4. References .................................................... 3 5. Author's Addresses ............................................ 3 1. Overview This document describes additional structures that allow an sFlow agent to export statistics relating to the behavior of IEEE 802.1Q Priority Flow Control (PFC) [1] on Ethernet interfaces. sFlow version 5 is an extensible protocol that allows the addition of new data structures without impacting existing collectors. This document does not change the sFlow version 5 protocol [2], it simply defines an addition, optional, data structure that an sFlow agent can use to report PFC statistics. 2. Discussion Supporting PFC-specific counters within the sFlow protocol is critical for maintaining high-performance, lossless Ethernet Draft sFlow.org [Page 1] 0.3 sFlow Priority Flow Control Structures March 2026 environments, such as those used for AI/ML training and RoCEv2 (RDMA over Converged Ethernet). Important use cases for reporting PFC counters in sFlow include: * Reveal "silent" congestion due to paused links * Visibility into network deadlocks due to PFC storms * Correlate traffic and drops with flow control 3. sFlow Datagram Extensions An sFlow agent exporting a counter_sample for port with priority flow control enabled must include an if_counters and a pfc_counters structure. The pfc_counters structure reports requests and indications from the IEEE8021-PFC-MIB [1]. The pause_duration counter reports total amount of time (in microseconds) that port has been in paused state for any priority [3]. Finally, a PFC watchdog may be used to mitigate PFC storms and the storm_detected, storm_restored counters are used to report storm control activity [4]. The value of pause_duration is not required to be accurate, but should be the best estimate available and consistent with values reported through network operating system show commands. Typically, pause_duration is an estimate generated when the watchdog periodically polls the queues. This method of estimation has the following limitations: * pause/unpause within a single polling interval won't be recorded * accuracy is limited by polling interval * exported value is the sum across all queues The following structure is used to report PFC statistics for an interface: /* PFC Counters */ /* opaque = counter_data; enterprise = 0; format = 11 */ struct pfc_counters { unsigned int requests; /* ieee8021PfcRequests */ unsigned int indications; /* ieee8021PfcIndications */ unsigned int pause_duration; /* cumulative pause duration in microseconds */ unsigned int storm_detected; /* number of times watchdog timer expired */ unsigned int storm_restored; /* number of times queue restored to healthy state */ } All counters are rolled up to the port level, i.e. if hardware maintains counters broken out by queue / priority then they need to Draft sFlow.org [Page 2] 0.3 sFlow Priority Flow Control Structures March 2026 be aggregated to port level before being exported. In the context of sFlow export, a port level view provides consistency with other port level counters reported by sFlow and in typical PFC deployments, such as RoCEv2, only one queue has PFC enabled, so the added complexity of per queue metrics isn't necessary. In addition, sFlow Packet Flow Records [2] provide detailed visibility into traffic that can be correlate with the summary counters to identify traffic affected by flow control. An agent implementing this specification is not required to report a complete set of counters. Any counters that are not available on the platform must use the standard 0xFFFFFFFF value to indicate that the counter value is unknown [2]. 4. References [1] IEEE, "IEEE Standard for Local and Metropolitan Area Net- works--Bridges and Bridged Networks," IEEE Std 802.1Q-2022 [2] Phaal, P. and Lavine, M., "sFlow Version 5", http://www.sflow.org/sflow_version_5.txt, July 2006 [3] SONiC, "PFC Historical Statistics", https://github.com/sonic- net/SONiC/blob/master/doc/PFC_historical_statistics/, June 2025 [4] SONiC, "PFC Watchdog", https://github.com/sonic-net/SONiC/wiki/PFC- Watchdog, September 2017 5. Author's Address Peter Phaal InMon Corp. 1 Sansome Street, 14th Floor San Francisco, CA 94104 EMail: peter.phaal@inmon.com Anoop Ghanwani Dell Inc. 5450 Great America Parkway Santa Clara, CA 95054 EMail: anoop@alumni.duke.edu Draft sFlow.org [Page 3]