NVMe over Fabrics: FC-NVMe, NVMe/TCP, NVMe/RoCE e la loro ottica
NVMe ha sostituito SCSI dentro il server perché la flash è abbastanza veloce da esporre l’overhead del protocollo; NVMe over Fabrics (NVMe-oF) porta lo stesso set di comandi attraverso una rete, così lo storage condiviso può tenere il passo. Funziona su tre trasporti che corrispondono a tre tipi di rete — e quindi tre tipi di ottiche e tre insiemi di regole del livello fisico. Questa pagina li confronta e dice cosa richiede ciascuno ai collegamenti.
Perché NVMe-oF
| Aspetto | Era SCSI (FCP, iSCSI) | NVMe-oF |
|---|---|---|
| Code di comandi | una coda, ~32–256 comandi | fino a 64k code × 64k comandi; parallelo per progettazione |
| Overhead di protocollo per I/O | decine di µs di tempo CPU | pochi µs; i trasporti RDMA bypassano la CPU |
| Latenza aggiunta dalla fabric | 100–200 µs tipici | 10–30 µs (RDMA/FC), 30–80 µs (TCP) |
| Ideale per | array HDD e flash di prima generazione | all-flash, storage disaggregato, pipeline dati GPU |
I trasporti
| Trasporto | Rete | Lossless? | Latenza | Note |
|---|---|---|---|---|
| FC-NVMe (FC-NVMe-2) | Fibre Channel 16/32/64GFC | sì, a crediti | molto bassa | funziona insieme a SCSI FCP sulla stessa fabric e gli stessi SFP; zoning e name server invariati (Nozioni di base del protocollo FC) |
| NVMe/RoCE v2 | Ethernet 25/100/200/400G con NIC RDMA | richiede PFC/ECN (DCQCN) | molto bassa | verbs RDMA su UDP/IP; serve una configurazione lossless end-to-end (Ethernet lossless) |
| NVMe/TCP | qualsiasi Ethernet/IP | no — TCP gestisce la perdita | bassa–media | nessuna NIC o funzionalità switch speciale; instradabile; la scelta più diffusa in ambito enterprise |
| NVMe/IB | InfiniBand | sì, a crediti | molto bassa | storage HPC/AI (InfiniBand) |
Tutti e quattro condividono l’architettura NVMe-oF: un controller di discovery comunica agli host quali subsystem esistono; gli host collegano le code ai controller I/O; ANA (asymmetric namespace access) gestisce il multipath.
Cosa richiede ciascuno al livello fisico
| Trasporto | Requisito del collegamento | Ottiche |
|---|---|---|
| FC-NVMe | collegamenti FC puliti — CRC/ITW vicino a zero, crediti non esauriti | SFP FC 16/32/64GFC, validati dal produttore (Ottiche FC) |
| NVMe/RoCE | zero perdite: FEC attivo, PFC sulla classe RoCE, nessun errore CRC (ogni frame perso blocca la coda RDMA con ritrasmissione go-back-N) | 25G SFP28 / 100G QSFP28 / 400G; DAC in rack, SR/AOC in fila, LR/DR tra sale; FEC per PMD |
| NVMe/TCP | ordinaria; la perdita costa latenza, non correttezza | qualsiasi ottica Ethernet |
| NVMe/IB | come le fabric InfiniBand | cavi e ottiche IB (Cablaggio IB) |
RoCE è quello sensibile: un collegamento con una potenza Rx al limite o un connettore sporco produce errori CRC che TCP assorbirebbe silenziosamente ma che bloccano visibilmente le code RDMA. I picchi di latenza dello storage che seguono i contatori di errore di una porta sono il segnale rivelatore (Potenza Rx e bilancio del collegamento, Metriche VDM e FEC).
Come scegliere
| Situazione | Trasporto consigliato |
|---|---|
| SAN FC esistente, array all-flash | FC-NVMe — stessa fabric, stesse ottiche, abilita per target |
| Storage Ethernet greenfield, fornitori misti, routing tra sedi | NVMe/TCP |
| Critico per la latenza, Ethernet a fornitore unico, competenza lossless interna | NVMe/RoCE |
| Cluster HPC/AI con fabric IB | NVMe/IB o file system paralleli su IB |
| Cluster GPU con scale-out Ethernet | NVMe/RoCE o NVMe/TCP su una rete di storage separata (Fabric GPU) |
Note operative
- Reti separate per storage e compute dove possibile — o almeno classi di traffico separate; RoCE ha bisogno di una propria classe lossless.
- MTU: 9000 sui trasporti Ethernet; coerente end-to-end.
- Multipath: due fabric oppure due VLAN/leaf; initiator con supporto ANA.
- Monitoraggio: contatori CRC/FEC e di pausa per porta, più gli andamenti del DDM — un’ottica in degrado si manifesta come latenza di coda molto prima di guastarsi (Monitoraggio).
- Firmware: le matrici di compatibilità del firmware di NIC/HBA e array contano quanto la compatibilità delle ottiche (Le ottiche nella SAN).
In CodingBox
Le ottiche di una fabric NVMe-oF sono normali moduli FC, Ethernet o IB; la differenza è quanto poco errore tollera il trasporto. Leggere l’identità e il DDM di baseline sul banco prima dell’installazione (Check transceiver, DDM) e codificare identità che i produttori di array e switch accettano (Blocco del produttore) sono le parti del lavoro che riguardano il programmatore.
Gli adattatori su cui girano queste fabric — NIC 100G/200G, le loro gabbie, i limiti PCIe e le policy dei moduli: NIC con porte ottiche.