CodingBox Documentation

Lossless Ethernet for storage: DCB, PFC, ECN

Ethernet drops frames when it is congested; storage protocols built for Fibre Channel or RDMA assume nothing is ever dropped. Data Center Bridging (DCB) closes the gap with per-priority flow control and bandwidth allocation, and RoCE adds congestion signalling on top. The result is only as lossless as its worst link: a marginal optic that drops one frame in a million is a storage incident. This page explains the mechanisms and translates them into physical-layer requirements.

The DCB toolkit

StandardNameWhat it does
IEEE 802.1QbbPFC — priority-based flow controlpause frames per traffic class (0–7): a congested receiver stops one class without stopping the port
IEEE 802.1QazETS — enhanced transmission selectionguaranteed bandwidth shares per class (e.g. 50 % storage, 50 % LAN)
IEEE 802.1QazDCBX — DCB exchangeLLDP-based negotiation of PFC/ETS settings between switch and NIC
IEEE 802.1QauCN — congestion notificationrarely deployed
RFC 3168 + DCQCNECN marking + rate controlthe switch marks packets when queues build; RoCE NICs slow the flow before PFC is needed

How RoCE stays lossless

  1. Storage/RDMA traffic is tagged with a dedicated priority (often 3 or 4) via DSCP or 802.1p.
  2. PFC is enabled only for that priority on every port along the path, with buffer headroom sized for the link speed and cable length (in-flight bytes).
  3. ECN thresholds mark packets early; NICs run DCQCN to reduce their rate, so PFC fires only as a last resort.
  4. ETS guarantees the storage class its bandwidth under LAN load.
  5. DCBX keeps NIC and switch settings consistent; mismatches silently break losslessness.

FC and InfiniBand achieve the same with credits at every link by default; Ethernet needs it configured, verified and monitored (FC protocol basics, InfiniBand transport).

What can go wrong

ProblemEffectDetection
PFC not enabled on one hop / wrong prioritydrops under load; RDMA retransmits; latency spikespause counters zero where they should not be; drops on the class
PFC storma stuck receiver pauses upstream indefinitely; congestion spreads fabric-widepause frames flooding; watchdog counters
PFC deadlockcyclic buffer dependency in Clos fabrics; all traffic on the class stopsrequires deadlock detection / watchdog to break
Headroom too small for long cables/opticsdrops despite PFCdrops with pause counters active
ECN thresholds wrongtoo early: throughput loss; too late: PFC floodsECN mark counters, CNP counters on NICs
Physical errors on a link (CRC, FEC uncorrectable)frames lost that no flow control can recoverport error counters, FEC counters — VDM & FEC metrics

iSCSI without DCB

iSCSI runs over TCP and survives loss, but pays for it in latency and retransmission. Best practice regardless of DCB:

  • dedicated VLANs/subnets per fabric, two fabrics, MPIO on hosts;
  • jumbo frames (MTU 9000) end to end;
  • no oversubscription between initiators and targets; 25G/100G uplinks sized for the array;
  • FEC on for every 25G+ link; CRC counters at zero;
  • optionally PFC on the iSCSI class to smooth micro-bursts (many arrays recommend it).

Physical-layer requirements

RequirementWhyPractice
FEC enabled and matched on every 25G+ linkRoCE cannot tolerate the raw BER of unprotected 25G/50G lanesFEC & link training
CRC and uncorrectable FEC = 0each lost frame stalls a queuealert on any increment
Rx power inside the window with marginmarginal optics produce bursts of errors under temperatureRx power & link budget
Consistent speed/duplex/ANDAC needs AN + link training both endsCopper & DAC
Cable length within headroom assumptionsheadroom is computed from in-flight bytesprefer DAC in rack, SR/AOC in row, DR/LR between rooms
Identity accepted by NIC and switchrejected optics fall back to no link or reduced speedVendor lock

Monitoring checklist

  • Per port: pause frames sent/received per priority, ECN marks, drops per class, CRC, FEC corrected/uncorrectable, link flaps.
  • Per NIC: CNPs sent/received, retransmissions, out-of-sequence, timeouts.
  • Per optic: Rx/Tx power and temperature trends (Monitoring).
  • Correlate storage tail-latency spikes with the above — the physical layer is guilty more often than the array.

In CodingBox

A lossless fabric is built from ordinary optics that are simply held to a higher standard. Incoming inspection on the bench — identity, checksums, live DDM against typical values, baseline stored — is how marginal modules are kept out of a fabric where one bad link costs an application its latency SLA (Check transceiver, DDM).