# NVMe over Fabrics

NVMe over Fabrics (NVMe-oF) è una tecnologia che consente l'accesso remoto a dispositivi di storage basati su NVMe (Non-Volatile Memory Express) tramite reti ad alte prestazioni. L'obiettivo principale di questa tecnologia è superare le limitazioni delle tradizionali soluzioni di storage su rete, migliorando latenza e scalabilità. A differenza dei protocolli di storage tradizionali, NVMe-oF utilizza un modello di comunicazione leggero e altamente parallelo, progettato specificamente per le caratteristiche delle memorie non volatili.

## Storia

La tecnologia NVMe over Fabrics è stata introdotta nel 2016 come evoluzione dell'interfaccia NVMe. Il suo sviluppo è stato guidato dal consorzio NVM Express, con l'obiettivo di estendere i benefici delle memorie flash NVMe ad ambienti distribuiti.

## Architettura e principi di funzionamento
### Differenze tra NVMe e NVMe-oF

NVMe è un'interfaccia ottimizzata per dispositivi di memoria non volatile come SSD e progettata per l'accesso diretto tramite PCIe. NVMe over Fabrics, invece, utilizza reti ad alte prestazioni per connettere i dispositivi di storage ai server, mantenendo un'architettura scalabile e a bassa latenza.

### Componenti principali

* Initiator: Il client che invia richieste per accedere allo storage remoto.
* Target: Il dispositivo o sistema di storage che risponde alle richieste.
* Fabric: Il mezzo di trasporto utilizzato per la comunicazione, come Ethernet, Fibre Channel o InfiniBand.

### Protocolli di trasporto

NVMe-oF supporta diversi protocolli di trasporto:
* RDMA (Remote Direct Memory Access): Permette un accesso diretto alla memoria tra sistemi remoti, riducendo la latenza.
* TCP: Offre una soluzione più ampiamente compatibile rispetto a RDMA, a scapito di una maggiore latenza.
** Porta 4420: È la porta predefinita per il protocollo NVMe-oF stesso, utilizzata per il trasferimento dei dati tra l'host e il dispositivo di destinazione.
** Porta 8009: Questa porta è utilizzata per il rilevamento di NVMe-oF, che consente ai dispositivi di localizzarsi e identificarsi reciprocamente sulla rete.
* Fibre Channel: È un protocollo di rete ad alte prestazioni, progettato specificamente per l'archiviazione. Offre una latenza inferiore rispetto a TCP e una maggiore scalabilità rispetto a RDMA.

## Vantaggi

* Latenza ridotta grazie alla minimizzazione dei passaggi di elaborazione.
* Elevata scalabilità per ambienti distribuiti.
* Maggiore efficienza nei trasferimenti dati rispetto alle tecnologie tradizionali.

## Limiti

* Maggiore complessità nell'implementazione rispetto alle tecnologie di storage tradizionali.
* Requisiti di rete avanzati, come hardware compatibile con RDMA.

## Applicazioni

NVMe-oF è utilizzato in diversi ambiti tecnologici:
* Cloud computing e virtualizzazione.
* Data center di nuova generazione.
* Applicazioni di intelligenza artificiale e analisi di grandi quantità di dati.
* Ambienti di calcolo ad alte prestazioni (HPC).

## Standardizzazione

Il consorzio NVM Express è responsabile della standardizzazione di NVMe-oF, fornendo specifiche tecniche e linee guida per la sua implementazione.

## Confronto con altre tecnologie
### NVMe-oF vs iSCSI

NVMe-oF presenta una latenza inferiore rispetto a iSCSI, grazie all'uso di protocolli moderni come RDMA. Tuttavia, iSCSI è più ampiamente adottato per la sua semplicità e compatibilità.

### NVMe-oF vs Samba

NVMe-oF è un protocollo di storage ad alte prestazioni, ottimizzato per la gestione di blocchi di dati, mentre Samba è un protocollo per la condivisione di file, progettato per flessibilità e compatibilità multipiattaforma.

### NVMe-oF vs NFS

NVMe-oF è focalizzato sull'accesso diretto ai blocchi di dati con prestazioni elevate, mentre NFS (Network File System) è progettato per la condivisione di file tra sistemi, offrendo funzionalità di montaggio e accesso distribuito.