O RDMA, ou Acesso Remoto Direto à Memória, é uma tecnologia que permite que um computador acesse diretamente a memória de outro computador em uma rede, sem envolver o sistema operacional ou a CPU do computador de destino. Pense nisso como uma “conexão direta” entre as memórias de dois sistemas.
O segredo do RDMA está em desviar o caminho tradicional de processamento de dados na rede. Em vez de os dados passarem pela pilha de rede do sistema operacional (que envolve cópias de dados entre o espaço do usuário e o espaço do kernel, interrupções da CPU, etc.), o RDMA permite que a placa de rede (NIC) com capacidade RDMA (também conhecida como RNIC – RDMA NIC) execute a transferência de dados diretamente para a memória do aplicativo no host remoto.
A tecnologia RoCE (RDMA over Converged Ethernet) é um protocolo de rede que permite o Acesso Remoto Direto à Memória (RDMA) através de redes Ethernet.
Quais aplicações que fazem o melhor uso do RDMA?
As aplicações que exigem baixa latência, alta vazão e baixa utilização da CPU para a comunicação de rede demandam funcionalidades como o RDMA, muito útil em cenários onde grandes volumes de dados precisam ser movidos rapidamente entre servidores ou entre dispositivos, como GPUs e adaptadores de rede:
- Computação de Alto Desempenho (HPC – High Performance Computing):
- Simulações Científicas: Experimentos que simulam fenômenos complexos, como mudanças climáticas, interações moleculares ou física de partículas, exigem um poder de processamento distribuído entre várias CPUs e GPUs. O RDMA acelera a comunicação entre esses nós, tornando as simulações mais rápidas e eficientes.
- Clusters de Supercomputadores: Em ambientes de cluster, onde milhares de processadores trabalham em conjunto. O RDMA permite que os dados sejam transferidos diretamente entre as memórias dos nós, evitando gargalos e otimizando o desempenho geral do cluster.
- Inteligência Artificial (IA) e Machine Learning (ML):
- Treinamento de Redes Neurais: Modelos de IA, especialmente redes neurais profundas, exigem a transferência de grandes quantidades de dados (como pesos e gradientes) entre GPUs e outros dispositivos durante o treinamento. O RDMA acelera essas transferências, tornando o treinamento e a execução dos modelos mais rápidos e eficientes.
- Análise de Dados em Larga Escala: Aplicações de IA e ML frequentemente lidam com conjuntos de dados massivos. O RDMA facilita o acesso e a movimentação desses dados, permitindo análises mais rápidas e em tempo real.
- Armazenamento de Dados de Alta Performance:
- Redes de Armazenamento (SANs e NAS): Soluções de armazenamento de alto desempenho, como NVMe over Fabrics (NVMe-oF), iSCSI Extensions for RDMA (iSER) e NFS over RDMA. Ele permite que os servidores acessem os dados diretamente na memória dos dispositivos de armazenamento, reduzindo a latência e aumentando a vazão.
- Bancos de Dados In-Memory: Sistemas de banco de dados que mantêm os dados na memória para acesso ultrarrápido se beneficiam enormemente do RDMA, pois ele permite a replicação e o acesso rápido aos dados entre os nós do cluster.
- Virtualização e Infraestrutura Hiperconvergente (HCI):
- Comunicação entre Máquinas Virtuais (VMs): Em ambientes virtualizados, o RDMA pode otimizar a comunicação entre VMs, especialmente quando elas precisam trocar grandes volumes de dados.
- HCI: Soluções de infraestrutura hiperconvergente, que integram computação, armazenamento e rede em uma única plataforma, se beneficiam do RDMA para garantir alta vazão e baixa latência na comunicação interna, fundamental para o desempenho geral do sistema.
- Análise de Negócios (Business Analytics):
- Aplicações que envolvem a análise de grandes volumes de dados para obter insights de negócios podem se beneficiar do RDMA para acelerar o processamento e a movimentação desses dados.
- Replicação de Dados e Continuidade de Negócios:
- O RDMA pode ser usado para replicação de dados de curta distância, oferecendo uma alternativa mais econômica e eficiente para soluções de recuperação de desastres (DR) e continuidade de negócios, especialmente em ambientes Ethernet.
Em resumo, qualquer aplicação que seja sensível à latência e que exija a transferência de grandes volumes de dados entre sistemas se beneficiará significativamente do RDMA. A capacidade de descarregar o processamento da rede da CPU e mover dados diretamente entre as memórias dos dispositivos é o que torna o RDMA uma tecnologia tão valiosa nesses cenários.
Tecnologias para uso do RDMA em redes Ethernet Convergentes
Tradicionalmente, para enviar dados, as aplicações precisam passar pelo sistema operacional para empacotar o TCP/IP, e então pelos caches da memória principal e da placa de rede, antes de serem enviados. Esse processo introduz latência e consome recursos da CPU.
O RoCE (RDMA over Converged Ethernet), por sua vez, permite que as tarefas de envio e recebimento de pacotes sejam transferidas para a placa de rede (NIC), eliminando a necessidade de o sistema entrar no modo kernel, característico do protocolo TCP/IP. Isso reduz a sobrecarga associada à cópia, encapsulamento e desencapsulamento de dados, resultando em uma diminuição substancial na latência da comunicação Ethernet e minimizando a utilização de recursos da CPU durante a comunicação.
Vantagens do RoCE:
- Alta performance: Proporciona acesso remoto à memória com alta largura de banda e baixa latência.
- Suporte a RDMA: Permite a transferência direta de dados entre memórias sem envolver a CPU do host, o que reduz a sobrecarga de processamento e aumenta a eficiência.
- Custo-benefício: Permite alcançar um desempenho similar ao InfiniBand (outra tecnologia RDMA de alta performance) em redes Ethernet existentes, que geralmente são mais acessíveis.
- Compatibilidade: Funciona sobre a infraestrutura Ethernet, facilitando a integração em configurações de data center já existentes.
Versões do RoCE:
Existem duas versões principais do protocolo RoCE:
- RoCE v1: É um protocolo da camada de enlace Ethernet, o que significa que a comunicação é limitada a hosts dentro do mesmo domínio de broadcast Ethernet.
- RoCE v2: É um protocolo da camada de internet, o que permite que os pacotes RoCE v2 sejam roteados e possam viajar entre sub-redes. Ele opera sobre UDP/IPv4 ou UDP/IPv6.

Para que o RoCE funcione de forma otimizada, é importante que a rede Ethernet seja “lossless” (sem perdas), o que geralmente é configurado através de controle de fluxo Ethernet ou controle de fluxo de prioridade (PFC).
O RoCE é amplamente utilizado em cenários que exigem alta performance e baixa latência, como data centers, computação de alto desempenho (HPC), inteligência artificial (IA), aprendizado de máquina e redes de armazenamento.
Detalhando um pouco mais o RoCEv1 e RoCEv2
A distinção entre RoCEv1 e RoCEv2 reside na sua camada de operação e, consequentemente, na sua capacidade de roteamento.
O RoCEv1 é um protocolo que atua na Camada 2 da rede, a camada de enlace de dados. Isso significa que sua comunicação é restrita ao mesmo domínio de broadcast Ethernet, ou seja, a mesma VLAN ou sub-rede. Ele não possui a capacidade de ser roteado por dispositivos de Camada 3, como roteadores. Sua implantação é mais simples, mas sua flexibilidade é limitada a ambientes de rede mais planos ou a segmentos isolados.
Por outro lado, o RoCEv2 opera na Camada 3, a camada de rede. Ele encapsula os pacotes RDMA dentro de pacotes UDP e IP. Essa característica é a sua maior vantagem, pois permite que os pacotes RoCEv2 sejam roteados através de roteadores de Camada 3. Isso possibilita a comunicação RDMA entre diferentes sub-redes e até mesmo através de redes de longa distância, embora o desempenho em WANs possa ser afetado pela latência. O cabeçalho do pacote RoCEv2 é um pouco mais complexo, incluindo os cabeçalhos UDP e IP, além do cabeçalho InfiniBand, o que adiciona um pequeno overhead.
Em termos de flexibilidade e escalabilidade, o RoCEv1 é menos versátil, sendo mais adequado para clusters menores ou segmentos de rede isolados. Já o RoCEv2 é significativamente mais flexível e escalável, tornando-se a escolha preferencial para data centers modernos e ambientes de nuvem que demandam comunicação RDMA entre múltiplos segmentos de rede. A configuração de rede para o RoCEv2 é mais elaborada, pois envolve o endereçamento IP e o roteamento, além da necessidade de garantir uma rede sem perdas com PFC e ECN.
Na prática, o RoCEv2 é a versão predominante e a mais recomendada para novas implementações de RDMA sobre Ethernet, dada a sua capacidade de roteamento e a flexibilidade que oferece para construir redes de alto desempenho em larga escala. O RoCEv1 ainda pode ser encontrado em algumas configurações mais antigas ou em situações muito específicas onde a comunicação é estritamente local.

Como já explicado, o RoCE é uma tecnologia baseada em Ethernet. Sua primeira versão (v1) utiliza regras do InfiniBand (IB) na camada de rede, enquanto a segunda versão (v2) emprega UDP e IP, permitindo que os pacotes de dados sejam transmitidos por diferentes caminhos de rede. O RoCE pode ser visto como uma versão mais econômica do InfiniBand (IB), pois encapsula as informações do IB em pacotes Ethernet para transmissão e recepção.
Como o RoCEv2 pode utilizar equipamentos de comutação Ethernet comuns (embora exija suporte a tecnologias de controle de fluxo como PFC e ECN para lidar com problemas de congestionamento e perda de pacotes na Ethernet), ele tem aplicação mais ampla em empresas. No entanto, em condições convencionais, seu desempenho pode não ser tão bom quanto o do IB.
iWARP
iWARP (Internet Wide Area RDMA Protocol) é uma tecnologia que permite o Acesso Remoto Direto à Memória (RDMA) sobre redes Ethernet padrão, utilizando os protocolos TCP/IP. Diferente do RoCE, que requer uma rede Ethernet “lossless” e switches com configurações específicas para controle de fluxo (PFC/ECN), o iWARP é projetado para funcionar sobre a infraestrutura TCP/IP existente, o que o torna mais fácil de implantar em redes convencionais sem a necessidade de alterações significativas nos switches. Ele alcança o RDMA descarregando as operações TCP/IP para a placa de rede (NIC), permitindo que os dados sejam transferidos diretamente para a memória remota sem a intervenção da CPU do host, resultando em baixa latência e alta vazão, embora geralmente com um desempenho ligeiramente inferior ao RoCE em ambientes otimizados, devido à sobrecarga inerente ao TCP/IP.

O protocolo iWARP é baseado no TCP, um protocolo confiável e orientado a conexão. Isso significa que, na presença de problemas de rede (como perda de pacotes), o iWARP é mais confiável que o RoCEv2 e o InfiniBand (IB), especialmente em redes de grande escala. No entanto, estabelecer um grande número de conexões TCP pode consumir memória significativa, e os mecanismos complexos do TCP, como controle de fluxo, podem impactar o desempenho. Portanto, em termos de desempenho, o iWARP pode não ser tão eficiente quanto o RoCEv2 e o IB, que são baseados em UDP.
Consorcio UEC
O Consórcio UEC propõe substituir o ROCEv2 por um novo protocolo aberto baseado em UDP/IP, focado em redes de IA/ML e HPC. O protocolo substituto deve oferecer multipath, controle de congestionamento eficiente, escalabilidade e confiabilidade, exigindo mudanças em todas as camadas da pilha de rede. Detalhes estão no whitepaper do UEC, que compartilha ideias com trabalhos como o 1RMA Paper e o EDQS Paper. A expectativa é que novidades sobre a tecnologia do UltraEthernet Consortium sejam divulgadas no Open Compute Global Summit em outubro.
Atualmente, não há um padrão ROCEv3 em desenvolvimento, e as demandas de IA/ML, HPC e datacenters em nuvem podem exigir soluções distintas devido a diferenças em latência, throughput e topologias de rede. Embora haja a possibilidade de um padrão único e programável, a colaboração entre fóruns será essencial para evitar fragmentação. O processo de maturação de novos padrões é lento, envolvendo anos de desenvolvimento e testes, enquanto grandes players continuam a investir em soluções proprietárias no curto prazo.
Referências
https://www.naddod.com/blog/easily-understand-rdma-technology?
https://www.starwindsoftware.com/blog/rdma-a-deep-dive-into-remote-direct-memory-access/
https://www.techtarget.com/searchstorage/definition/Remote-Direct-Memory-Access
https://www.linkedin.com/pulse/rdma-networking-trends-rakesh-cheerla-izpuc/