NVMe over Fabrics: FC-NVMe, NVMe/TCP, NVMe/RoCE en hun optische modules
NVMe verving SCSI in de server omdat flash snel genoeg is om de protocoloverhead zichtbaar te maken. NVMe over Fabrics (NVMe-oF) vervoert dezelfde commandoset via een netwerk, zodat gedeelde storage kan bijblijven. Het draait op drie transporten die op drie soorten netwerken zijn toegewezen — en dus op drie soorten optica en drie reeksen regels voor de physical layer. Deze pagina vergelijkt ze en beschrijft wat elk van de links vraagt.
Waarom NVMe-oF
| Aspect | SCSI-tijdperk (FCP, iSCSI) | NVMe-oF |
|---|---|---|
| Commandowachtrijen | één wachtrij, ~32–256 commando's | tot 64k wachtrijen × 64k commando's; parallel van ontwerp |
| Protocoloverhead per I/O | tientallen µs CPU-tijd | enkele µs; RDMA-transporten omzeilen de CPU |
| Door de fabric toegevoegde latentie | 100–200 µs typisch | 10–30 µs (RDMA/FC), 30–80 µs (TCP) |
| Beste voor | HDD- en vroege flash-arrays | all-flash, gedesaggregeerde storage, GPU-datapijplijnen |
De transporten
| Transport | Netwerk | Verliesloos? | Latentie | Opmerkingen |
|---|---|---|---|---|
| FC-NVMe (FC-NVMe-2) | Fibre Channel 16/32/64GFC | ja, via credits | zeer laag | draait naast SCSI FCP op dezelfde fabric en SFP's; zonering en nameserver ongewijzigd (Basisprincipes van het FC-protocol) |
| NVMe/RoCE v2 | Ethernet 25/100/200/400G met RDMA-NIC's | vereist PFC/ECN (DCQCN) | zeer laag | RDMA verbs boven op UDP/IP; vereist end-to-end verliesloze configuratie (Verliesloos Ethernet) |
| NVMe/TCP | elk Ethernet/IP | nee — TCP behandelt verlies | laag–gemiddeld | geen speciale NIC's of switchfuncties; routeerbaar; de volumekeuze voor enterprises |
| NVMe/IB | InfiniBand | ja, via credits | zeer laag | HPC/AI-storage (InfiniBand) |
Alle vier delen de NVMe-oF-architectuur: een discovery controller vertelt hosts welke subsystems bestaan; hosts verbinden wachtrijen met I/O-controllers; ANA (asymmetric namespace access) verzorgt multipath.
Wat elk van de physical layer vraagt
| Transport | Linkeis | Optica |
|---|---|---|
| FC-NVMe | schone FC-links — CRC/ITW bijna nul, credits niet uitgeput | FC-SFP's 16/32/64GFC, gevalideerd door fabrikant (FC-optica) |
| NVMe/RoCE | nul verlies: FEC aan, PFC op de RoCE-klasse, geen CRC-fouten (elk verloren frame blokkeert de RDMA-wachtrij met go-back-N-hertransmissie) | 25G SFP28 / 100G QSFP28 / 400G; DAC in rack, SR/AOC in rij, LR/DR tussen ruimtes; FEC per PMD |
| NVMe/TCP | gewoon; verlies kost latentie, geen correctheid | elke Ethernetoptica |
| NVMe/IB | zoals InfiniBand-fabrics | IB-kabels en -optica (IB-bekabeling) |
RoCE is het gevoelige transport: een link met marginaal Rx-vermogen of een vuile connector produceert CRC-fouten die TCP stilzwijgend zou opvangen, maar die RDMA-wachtrijen zichtbaar blokkeren. Storage-latentiepieken die een poorts fouttellers volgen, zijn het teken (Rx-vermogen & linkbudget, VDM- & FEC-metrieken).
Kiezen
| Situatie | Logisch transport |
|---|---|
| Bestaand FC-SAN, all-flash-arrays | FC-NVMe — dezelfde fabric, dezelfde optica, per target inschakelen |
| Nieuwe Ethernetstorage, gemengde fabrikanten, routing tussen locaties | NVMe/TCP |
| Latentiekritisch, Ethernet van één fabrikant, verliesloze expertise in eigen huis | NVMe/RoCE |
| HPC/AI-cluster met een IB-fabric | NVMe/IB of parallelle bestandssystemen boven op IB |
| GPU-clusters met Ethernet scale-out | NVMe/RoCE of NVMe/TCP op een apart storagenetwerk (GPU-fabrics) |
Operationele notities
- Aparte netwerken voor storage en compute waar mogelijk — of ten minste aparte verkeersklassen; RoCE heeft een eigen verliesloze klasse nodig.
- MTU: 9000 op Ethernettransporten; consistent end-to-end.
- Multipath: twee fabrics of twee VLAN's/leaves; ANA-bewuste initiators.
- Monitoring: CRC/FEC- en pause-tellers per poort, plus DDM-trends — een verslechterende optic toont zich als tail latency lang voordat deze faalt (Monitoring).
- Firmware: compatibiliteitsmatrices voor NIC/HBA- en arrayfirmware zijn even belangrijk als optische compatibiliteit (Optica in het SAN).
In CodingBox
De optica van een NVMe-oF-fabric bestaat uit gewone FC-, Ethernet- of IB-modules; het verschil is hoe weinig fout het transport verdraagt. Identiteit en baseline-DDM vóór installatie op de werkbank uitlezen (Check transceiver, DDM) en identiteiten coderen die de array- en switchfabrikanten accepteren (Fabrikantvergrendeling) zijn de delen van het werk die de programmer raken.
De adapters waarop deze fabrics draaien — 100G/200G-NIC's, hun cages, PCIe-limieten en modulebeleid: NIC's met optische poorten.