NVMe over Fabrics: FC-NVMe, NVMe/TCP, NVMe/RoCE e sua óptica
O NVMe substituiu o SCSI dentro do servidor porque a flash é rápida o suficiente para expor o overhead do protocolo; o NVMe over Fabrics (NVMe-oF) transporta o mesmo conjunto de comandos através de uma rede, para que o armazenamento compartilhado consiga acompanhar o ritmo. Ele roda sobre três transportes que correspondem a três tipos de rede — e, portanto, três tipos de óptica e três conjuntos de regras de camada física. Esta página os compara e explica o que cada um exige dos enlaces.
Por que NVMe-oF
| Aspecto | Era SCSI (FCP, iSCSI) | NVMe-oF |
|---|---|---|
| Filas de comando | uma fila, ~32–256 comandos | até 64k filas × 64k comandos; paralelo por projeto |
| Overhead de protocolo por I/O | dezenas de µs de tempo de CPU | poucos µs; os transportes RDMA contornam a CPU |
| Latência adicionada pela fabric | 100–200 µs típico | 10–30 µs (RDMA/FC), 30–80 µs (TCP) |
| Melhor para | HDD e arrays de flash iniciais | all-flash, armazenamento desagregado, pipelines de dados de GPU |
Os transportes
| Transporte | Rede | Sem perdas? | Latência | Notas |
|---|---|---|---|---|
| FC-NVMe (FC-NVMe-2) | Fibre Channel 16/32/64GFC | sim, por créditos | muito baixa | roda junto com o SCSI FCP na mesma fabric e nos mesmos SFPs; zoning e name server inalterados (Fundamentos de protocolo de FC) |
| NVMe/RoCE v2 | Ethernet 25/100/200/400G com NICs RDMA | exige PFC/ECN (DCQCN) | muito baixa | verbs/RDMA sobre UDP/IP; exige configuração sem perdas de ponta a ponta (Ethernet sem perdas) |
| NVMe/TCP | qualquer Ethernet/IP | não — o TCP lida com a perda | baixa–média | sem NICs ou recursos de switch especiais; roteável; a escolha de maior volume para empresas |
| NVMe/IB | InfiniBand | sim, por créditos | muito baixa | armazenamento para HPC/IA (InfiniBand) |
Os quatro compartilham a arquitetura do NVMe-oF: um controlador de descoberta informa aos hosts quais subsistemas existem; os hosts conectam filas a controladores de I/O; o ANA (acesso assimétrico a namespace) trata o multipath.
O que cada um exige da camada física
| Transporte | Requisito de enlace | Óptica |
|---|---|---|
| FC-NVMe | enlaces de FC limpos — CRC/ITW perto de zero, créditos não esgotados | SFPs de FC 16/32/64GFC, validados pelo fabricante (Óptica de FC) |
| NVMe/RoCE | perda zero: FEC ativado, PFC na classe do RoCE, sem erros de CRC (cada quadro perdido trava a fila de RDMA com retransmissão go-back-N) | 25G SFP28 / 100G QSFP28 / 400G; DAC no rack, SR/AOC na fileira, LR/DR entre salas; FEC por PMD |
| NVMe/TCP | comum; a perda custa latência, não corretude | qualquer óptica Ethernet |
| NVMe/IB | como nas fabrics InfiniBand | cabos e ópticas de IB (Cabeamento de IB) |
O RoCE é o mais sensível: um enlace com potência Rx no limite ou um conector sujo produz erros de CRC que o TCP absorveria silenciosamente, mas que travam as filas de RDMA de forma visível. Picos de latência de armazenamento que acompanham os contadores de erro de uma porta são o indício (Potência Rx e orçamento de potência, Métricas de VDM e FEC).
Escolhendo
| Situação | Transporte adequado |
|---|---|
| SAN de FC existente, arrays all-flash | FC-NVMe — mesma fabric, mesma óptica, ativar por alvo |
| Armazenamento Ethernet greenfield, fabricantes variados, roteamento entre sites | NVMe/TCP |
| Crítico em latência, Ethernet de fabricante único, com expertise interna em sem perdas | NVMe/RoCE |
| Cluster de HPC/IA com fabric IB | NVMe/IB ou sistemas de arquivos paralelos sobre IB |
| Clusters de GPU com scale-out em Ethernet | NVMe/RoCE ou NVMe/TCP em uma rede de armazenamento separada (Fabrics de GPU) |
Notas operacionais
- Redes separadas para armazenamento e computação sempre que possível — ou, ao menos, classes de tráfego separadas; o RoCE precisa da sua própria classe sem perdas.
- MTU: 9000 nos transportes Ethernet; consistente de ponta a ponta.
- Multipath: duas fabrics ou duas VLANs/leaves; iniciadores com suporte a ANA.
- Monitoramento: contadores de CRC/FEC e de pausa por porta, além de tendências de DDM — uma óptica em degradação aparece como latência de cauda bem antes de falhar (Monitoramento).
- Firmware: as matrizes de compatibilidade de firmware de NIC/HBA e do array importam tanto quanto a compatibilidade das ópticas (Ópticas na SAN).
No CodingBox
A óptica de uma fabric NVMe-oF é feita de módulos comuns de FC, Ethernet ou IB; a diferença é quão pouco erro o transporte tolera. Ler a identidade e o DDM de referência na bancada antes da instalação (Check transceiver, DDM) e codificar identidades que os fabricantes do array e do switch aceitem (Bloqueio do fabricante) são as partes do trabalho que envolvem o programador.
Os adaptadores sobre os quais essas fabrics rodam — NICs de 100G/200G, suas gaiolas (cages), limites de PCIe e políticas de módulo: NICs com portas ópticas.