Lossless Ethernet voor opslag: DCB, PFC, ECN
Ethernet verwerpt frames bij congestie; storageprotocollen die voor Fibre Channel of RDMA zijn gebouwd, gaan ervan uit dat er nooit iets verloren gaat. Data Center Bridging (DCB) overbrugt die kloof met flowcontrol per prioriteit en bandbreedtetoewijzing, en RoCE voegt daar congestiesignalering aan toe. Het resultaat is slechts zo verliesloos als de slechtste link: een marginale optic die één frame per miljoen verliest, is een storage-incident. Deze pagina legt de mechanismen uit en vertaalt ze naar eisen voor de physical layer.
De DCB-toolkit
| Standaard | Naam | Wat het doet |
|---|---|---|
| IEEE 802.1Qbb | PFC — priority-based flow control | pause frames per verkeersklasse (0–7): een congestie-ontvanger stopt één klasse zonder de poort te stoppen |
| IEEE 802.1Qaz | ETS — enhanced transmission selection | gegarandeerde bandbreedteaandelen per klasse (bijv. 50 % storage, 50 % LAN) |
| IEEE 802.1Qaz | DCBX — DCB exchange | op LLDP gebaseerde onderhandeling van PFC/ETS-instellingen tussen switch en NIC |
| IEEE 802.1Qau | CN — congestion notification | zelden ingezet |
| RFC 3168 + DCQCN | ECN-markering + ratecontrol | de switch markeert pakketten wanneer wachtrijen oplopen; RoCE-NIC's verlagen de snelheid voordat PFC nodig is |
Hoe RoCE verliesloos blijft
- Storage/RDMA-verkeer krijgt via DSCP of 802.1p een aparte prioriteit (vaak 3 of 4).
- PFC wordt alleen voor die prioriteit ingeschakeld op elke poort langs het pad, met headroom voor de linksnelheid en kabellengte (bytes onderweg).
- ECN-drempels markeren pakketten vroeg; NIC's voeren DCQCN uit om hun snelheid te verlagen, zodat PFC alleen als laatste redmiddel optreedt.
- ETS garandeert de storageklasse haar bandbreedte onder LAN-belasting.
- DCBX houdt NIC- en switchinstellingen consistent; mismatches doorbreken de verliesloosheid stilzwijgend.
FC en InfiniBand bereiken standaard hetzelfde met credits op elke link. Bij Ethernet moet dit worden geconfigureerd, geverifieerd en gemonitord (Basisprincipes van het FC-protocol, InfiniBand-transport).
Wat kan misgaan
| Probleem | Effect | Detectie |
|---|---|---|
| PFC niet ingeschakeld op één hop / verkeerde prioriteit | verlies onder belasting; RDMA-hertransmissies; latentiepieken | pause-tellers nul waar dat niet hoort; verliezen in de klasse |
| PFC-storm | een vastgelopen ontvanger pauzeert upstream onbeperkt; congestie verspreidt zich door de hele fabric | overstroming met pause frames; watchdogtellers |
| PFC-deadlock | cyclische bufferafhankelijkheid in Clos-fabrics; al het verkeer in de klasse stopt | deadlockdetectie / watchdog vereist om te doorbreken |
| Headroom te klein voor lange kabels/optica | verlies ondanks PFC | verlies terwijl pause-tellers actief zijn |
| ECN-drempels onjuist | te vroeg: doorvoerverlies; te laat: PFC-overstromingen | ECN-markeringstellers, CNP-tellers op NIC's |
| Fysieke fouten op een link (CRC, FEC uncorrectable) | frames verloren die geen flowcontrol kan herstellen | poortfouttellers, FEC-tellers — VDM- & FEC-metrieken |
iSCSI zonder DCB
iSCSI draait boven op TCP en overleeft verlies, maar betaalt daarvoor met latentie en hertransmissie. Best practice, ongeacht DCB:
- aparte VLAN's/subnets per fabric, twee fabrics, MPIO op hosts;
- jumbo frames (MTU 9000) end-to-end;
- geen oversubscription tussen initiators en targets; 25G/100G-uplinks gedimensioneerd op de array;
- FEC ingeschakeld voor elke 25G+-link; CRC-tellers op nul;
- eventueel PFC op de iSCSI-klasse om microbursts af te vlakken (veel arrays bevelen dit aan).
Eisen voor de physical layer
| Eis | Waarom | Praktijk |
|---|---|---|
| FEC ingeschakeld en overeenkomend op elke 25G+-link | RoCE verdraagt de ruwe BER van onbeschermde 25G/50G-lanes niet | FEC & linktraining |
| CRC en uncorrectable FEC = 0 | elk verloren frame blokkeert een wachtrij | alarm bij elke toename |
| Rx-vermogen binnen het venster met marge | marginale optica produceert foutenbursts bij temperatuur | Rx-vermogen & linkbudget |
| Consistente snelheid/duplex/AN | DAC vereist AN + linktraining aan beide uiteinden | Koper & DAC |
| Kabellengte binnen headroomaannames | headroom wordt berekend uit bytes onderweg | gebruik bij voorkeur DAC in rack, SR/AOC in rij, DR/LR tussen ruimtes |
| Identiteit geaccepteerd door NIC en switch | afgewezen optica valt terug naar geen link of lagere snelheid | Fabrikantvergrendeling |
Checklist voor monitoring
- Per poort: verzonden/ontvangen pause frames per prioriteit, ECN-markeringen, verlies per klasse, CRC, FEC corrected/uncorrectable, link flaps.
- Per NIC: verzonden/ontvangen CNP's, hertransmissies, out-of-sequence, timeouts.
- Per optic: trends in Rx/Tx-vermogen en temperatuur (Monitoring).
- Correleer pieken in storage-tail-latency met het bovenstaande: de physical layer is vaker schuldig dan de array.
In CodingBox
Een verliesloze fabric wordt opgebouwd uit gewone optica die simpelweg aan een hogere norm wordt gehouden. Inkomende inspectie op de werkbank — identiteit, checksums, live-DDM tegen typische waarden, baseline opgeslagen — houdt marginale modules uit een fabric waar één slechte link een applicatie zijn latentie-SLA kost (Check transceiver, DDM).
Waar PFC en ECN tussen de andere forwardingmechanismen vallen en hoe fouten in de physical layer daarin zichtbaar worden: Basisprincipes van forwarding.