Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:SMC applicability

Última atualização: Jun 29, 2026

O Shared Memory Communication (SMC) é uma pilha de protocolos de rede do kernel que acelera aplicações TCP usando Remote Direct Memory Access (RDMA), sem exigir alterações nas aplicações. Este tópico ajuda a determinar se o SMC é adequado ao seu cenário e se o ambiente atende aos requisitos necessários.

Como funciona

O SMC opera em paralelo à pilha TCP/IP. Em vez de processar pacotes via software, ele delega o processamento do protocolo ao hardware subjacente e transmite dados pela leitura e escrita direta na memória compartilhada remota. O resultado é menor latência, redução da sobrecarga da CPU e maior throughput de rede.

A IBM disponibilizou o SMC como código aberto para a comunidade Linux, e o Alibaba Cloud Linux 3 aprimorou essa tecnologia. O SMC é compatível com interfaces de soquete padrão. Ao interceptar a chamada de sistema socket() para alterar a família de soquetes e os parâmetros de protocolo, as aplicações TCP existentes passam a usar a pilha SMC de forma transparente, sem necessidade de modificação ou recompilação. Para obter instruções de configuração, consulte Usar o SMC.

SMC stack architecture

O SMC possui duas variantes:

  • SMC over RDMA (SMC-R): Usa a tecnologia RDMA. O Alibaba Cloud Linux 3 oferece o SMC-R baseado no elastic Remote Direct Memory Access (eRDMA). Todo o conteúdo deste tópico aplica-se ao SMC-R.

  • SMC over Direct Memory Access (SMC-D): Usa a tecnologia de memória compartilhada interna (ISM).

Estabelecimento de conexão: O SMC inicia com um handshake TCP padrão de três vias. Uma opção TCP especial (Kind: 254, Value: 0xE2D4C3D9) no pacote SYN sinaliza a capacidade SMC ao par. Se ambos os lados suportarem o SMC, eles criarão os recursos RDMA correspondentes e concluirão um handshake SMC. Todos os dados subsequentes trafegarão via RDMA. Caso o handshake SMC falhe, ambos os lados retornarão automaticamente à conexão TCP estabelecida, mantendo a comunicação ininterrupta.

SMC connection establishment flow

Após o estabelecimento da primeira conexão SMC, o protocolo cria uma conexão confiável RDMA (RC) — denominada link SMC — sobre a rede RDMA. As conexões subsequentes reutilizam o mesmo link SMC para minimizar a sobrecarga de recursos RDMA. Quando o limite de reutilização é atingido, um novo link SMC é criado. Vários links SMC formam um grupo de links SMC (LGR) para transmissão RDMA e recuperação de desastres.

SMC link group (LGR) structure

Pré-requisitos

Para usar o SMC-R no Elastic Compute Service (ECS) da Alibaba Cloud:

Casos de uso

O SMC oferece maiores benefícios nos seguintes cenários:

  • Sem necessidade de modificar aplicações: A principal vantagem do SMC é permitir que aplicações TCP usem RDMA sem alterações de código. Note que, por ser uma pilha de protocolos do kernel, o SMC apresenta sobrecarga adicional de chamadas de sistema e cópia de dados entre modo kernel e usuário em comparação a aplicações RDMA nativas. Essa solução é ideal quando a integração perfeita com aplicações existentes é prioritária.

  • Cargas de trabalho sensíveis a latência e throughput: O offload de hardware reduz a latência de processamento de protocolos e a sobrecarga da CPU, enquanto o acesso direto à memória aumenta o throughput de rede.

  • Comunicação em rede interna: O SMC exige que ambos os endpoints ofereçam suporte ao protocolo, condição facilmente atendível em redes internas. Links de rede curtos amplificam ainda mais o benefício de latência.

  • Serviços intensivos em rede: Serviços nos quais a rede representa o principal gargalo apresentam as melhorias mais significativas em latência e throughput.

Quando não usar o SMC

Evite o SMC nos cenários descritos abaixo. Sempre que houver uma solução alternativa, ela estará listada na coluna Solution.

Cenário

Por que o desempenho do SMC é inferior

Solução

Conexões de curta duração

O estabelecimento de conexão SMC envolve um handshake TCP, um handshake SMC e a criação de recursos RDMA antes de qualquer fluxo de dados. Essa sobrecarga torna o SMC mais lento que o TCP para conexões efêmeras.

Use o smc-ebpf para limitar quais conexões usam o SMC. Consulte Habilitar e configurar o SMC.

Altas taxas de conexão em rajada

A mesma sobrecarga de estabelecimento de conexão causa enfileiramento durante rajadas, resultando em timeouts de conexão.

Utilize o smc-ebpf para restringir as conexões que usam SMC. Consulte Habilitar e configurar o SMC.

Caminhos entre elementos de rede distintos

Alguns elementos de rede descartam ou retransmitem incorretamente pacotes SYN/SYN-ACK contendo opções experimentais TCP não reconhecidas, causando timeouts de handshake ou falhas de conexão. Isso pode ocorrer em serviços expostos à internet. image.png

Execute aliyunsmc-check syn_check para verificar o caminho. Se a verificação falhar, desative o SMC nesse link usando smc-ebpf. Consulte Verificar o link de comunicação.

Comunicação via rede pública

Redes públicas frequentemente envolvem elementos que interferem nos handshakes SMC (mesmo problema citado acima). Atender aos requisitos do SMC em ambos os lados também é difícil, forçando o retorno ao TCP. Além disso, o SMC não possui reforço de segurança e é inadequado para ambientes não confiáveis.

Ambientes com restrição de memória

Cada conexão SMC pré-aloca buffers de memória compartilhada. Por padrão, uma conexão consome sysctl net.smc.wmem + sysctl net.smc.rmem em cada extremidade.

Use o smc-ebpf para restringir o uso do SMC ou reduza os tamanhos padrão dos buffers. Consulte Habilitar e configurar o SMC e Habilitar e configurar o SMC.

Comunicação entre zonas

A transmissão entre zonas adiciona de centenas de microssegundos a alguns milissegundos de latência, o que reduz a vantagem do SMC nesse quesito. O maior produto largura de banda-atraso também exige buffers maiores para aproveitar totalmente a largura de banda, aumentando a pressão sobre a memória.

Use Identificadores Únicos de Endpoint (UEIDs) para impedir o uso do SMC entre zonas. Consulte Habilitar e configurar o SMC.

Ferramenta de verificação automatizada

O Alibaba Cloud Linux 3 inclui o aliyunsmc-check, uma ferramenta para validar a configuração do ambiente SMC, os links de comunicação e a conectividade ponta a ponta. Ela faz parte do pacote aliyun-smc-extensions.

Instale o pacote

sudo yum install -y aliyun-smc-extensions

Verificar o ambiente básico

Valide se a versão do kernel e o dispositivo eRDMA estão configurados corretamente:

aliyunsmc-check basic_check

Saída de exemplo:

image

Verificar o link de comunicação

Confirme se nenhum elemento de rede no caminho interfere no SMC. Substitua <url> pela URL de destino:

aliyunsmc-check syn_check --url <url>

Saída de exemplo:

image.png

Se o link falhar na verificação, utilize smc-ebpf para desativar o SMC nesse link. Consulte Habilitar e configurar o SMC.

Verificar a conectividade SMC

Valide se o SMC consegue estabelecer conexões entre o host atual e um host remoto. A ferramenta usa SSH para se conectar ao host remoto.

Substitua os espaços reservados:

Espaço reservado

Descrição

<peer ip>

Endereço IP do host remoto

<usr>

Nome de usuário no host remoto

<keyfile>

Caminho para o arquivo de chave privada SSH

<passwd>

Senha do host remoto

Autenticação SSH por arquivo de chave

aliyunsmc-check connect_check --hosts <peer ip> --user <usr> --key <keyfile>

Autenticação SSH por senha

aliyunsmc-check connect_check --hosts <peer ip> --user <usr> --pwd <passwd>

Autenticação SSH sem senha

aliyunsmc-check connect_check --hosts <peer ip> --user <usr>

Saída de exemplo:

image.png

Próximos passos

  • Usar o SMC — ative o SMC, configure a ferramenta smc-ebpf e ajuste os tamanhos dos buffers