Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:SMC issues

Última atualização: Jun 29, 2026

Este tópico aborda problemas comuns do Shared Memory Communications (SMC) no Alibaba Cloud Linux 3 e suas respectivas soluções.

O SMC não melhora o desempenho da aplicação sobre TCP

Conexões SMC podem reverter para TCP sem a aceleração do Remote Direct Memory Access (RDMA). Para verificar se houve reversão, execute smcss -a. Se a coluna de modo exibir TCP, consulte O SMC reverte para TCP para identificar o código da causa.

Mesmo com o SMC ativo, não há garantia de ganho de desempenho. Os motivos mais comuns incluem:

  • Carga de trabalho limitada por CPU. Se a aplicação dedica a maior parte do tempo a computação em vez de E/S de rede, a mudança para RDMA tem pouco efeito.

  • Overhead de cabeçalho RDMA. Pacotes RDMA carregam cabeçalhos adicionais em comparação ao TCP, o que reduz ligeiramente o throughput para a mesma largura de banda. Para mitigar esse problema, ative os Jumbo Frames.

  • Conexões de curta duração. O estabelecimento de conexões SMC envolve operações de caminho lento, como criação e solicitação de recursos RDMA. Esse overhead supera os benefícios em cargas de trabalho dominadas por conexões efêmeras.

  • Recursos insuficientes. O SMC exige memória e recursos de interface RDMA elástica (ERI) vinculados às especificações da instância ECS. Quando os recursos se esgotam, o SMC reverte para TCP. Para requisitos de recursos, consulte Ativar e configurar o SMC.

Falha na comunicação após ativar o SMC

Após ativar o SMC-R em uma instância ECS com Alibaba Cloud Linux 3, alguns endereços voltados para a Internet respondem a ping, mas não permitem acesso: requisições curl falham, enquanto pings ICMP têm sucesso. Desativar o SMC-R resolve o problema.

Isso ocorre quando um servidor remoto ecoa opções TCP em vez de ignorar as não suportadas, conforme exigido pela RFC 9293. Quando um servidor devolve a opção TCP do SMC, a extremidade local identifica incorretamente o par como compatível com SMC. A incompatibilidade resultante no handshake causa falhas na conexão.

Para diagnosticar o problema, execute uma verificação de link de comunicação.

Para corrigir, configure o controle de negociação SMC baseado em políticas BPF e desative o SMC no link problemático.

O SMC não é ativado após executar smc_run

A execução de smc_run ./foo não cria conexões SMC. O comando smcr l não mostra grupos de links, e smcss -a exibe nenhuma conexão SMC ou uma reversão unilateral para TCP.

O smc_run utiliza LD_PRELOAD para injetar bibliotecas smc-tools que interceptam chamadas socket(2) e modificam famílias e protocolos de socket. Esse mecanismo não funciona para aplicações vinculadas estaticamente.

Para aplicações vinculadas estaticamente, ative o SMC no nível do kernel:

sysctl net.smc.tcp2smc

Para mais detalhes, consulte Ativar e configurar o SMC.

Portas 65500–65515 tornam-se inutilizáveis após ativar o SMC

Após carregar os módulos SMC, chamadas bind(2) nas portas 65500–65515 retornam EADDRINUSE.

O SMC-R com elastic Remote Direct Memory Access (eRDMA) reserva essas 16 portas para conexões fora de banda (OOB) no namespace de rede onde residem as ERIs. Execute dmesg para confirmar:

smc: smc: load SMC module with reserve_mode
NET: Registered protocol family 43
smc: netns <netns ID> reserved ports [65500 ~ 65515] for eRDMA OOB
smc: adding ib device erdma_0 with port count 1
smc: ib device erdma_0 port 1 has pnetid

Se essas portas já estiverem em uso quando os módulos SMC forem carregados, os módulos não poderão utilizar dispositivos eRDMA.

Para liberar as portas, descarregue os módulos SMC. Consulte Usar SMC no Alibaba Cloud ECS.

O SMC reverte para TCP com endereços IPv6

Após ativar o SMC para aplicações que usam IPv6, o smcss mostra reversão para TCP com o código de causa 0x03030000 ou 0x09990000.

Dispositivos eRDMA e SMC do Alibaba Cloud não suportam IPv6. Aplique uma das seguintes soluções alternativas antes de ativar o SMC para novas conexões.

Desativar IPv6 para todas as interfaces:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Desativar IPv6 para uma interface específica:

sudo sysctl -w net.ipv6.conf.<NetInName>.disable_ipv6=1

Substitua <NetInName> pelo nome da interface.

Usar endereços IPv6 mapeados para IPv4 na versão do kernel 5.10.134-17.3 e posteriores.

O desempenho do SMC é inferior ao TCP no limite de PPS

Quando a carga de rede atinge a taxa máxima de pacotes por segundo (PPS) para o tipo de instância ECS, aplicações que usam SMC com eRDMA apresentam menos consultas por segundo (QPS) do que aquelas que usam TCP.

Para verificar se você atingiu o limite de PPS:

O RDMA gera mais pacotes por requisição do que o TCP; portanto, o limite de PPS é atingido mais rapidamente. Isso ocorre apenas sob carga extrema, como testes de estresse de benchmark. Em produção, o tráfego raramente atinge o teto de PPS.

Se o limite de PPS for o gargalo, não use SMC para essa carga de trabalho.

O SMC reverte para TCP e o RDMA não consegue acelerar as comunicações

Após ativar o SMC, o smcss -a mostra que a conexão reverteu para TCP. A conexão ainda funciona, mas sem a aceleração do RDMA.

Identificar o código da causa

Execute smcss -a para obter o código da causa da reversão:

State          UID   Inode   Local Address           Peer Address            Intf Mode
ACTIVE         00000 0156721 192.168.99.21:60188     192.168.99.22:8090      0000 TCP 0x03010000
ACTIVE         00000 1202539 172.16.4.189:44780      172.16.4.190:1811       0000 SMCR

Na primeira entrada, TCP na coluna de modo indica uma reversão. O código da causa é 0x03010000. Na segunda entrada, SMCR confirma uma conexão SMC-R bem-sucedida.

Se dois códigos de causa aparecerem (por exemplo, 0x05000000 e 0x03030001), o primeiro é do host local e o segundo do par. A maioria das reversões é causada pelo par.

Referência de códigos de causa

Código da causa

Descrição

Causa e solução

0x01010000

Memória insuficiente para estruturas de dados SMC

A memória do host não comporta os recursos de conexão SMC. Libere memória encerrando processos desnecessários.

0x02010000

Timeout de mensagem CLC ou LLC durante o handshake TCP

Causa 1: Placas de interface de rede RDMA (RNICs) ou links RDMA falharam, causando timeouts de mensagem LLC. Verifique se as RNICs funcionam corretamente. Causa 2: NICs Ethernet ou redes TCP/IP falharam, causando timeouts de mensagem CLC. Verifique se as NICs Ethernet funcionam corretamente.

0x02020000

Timeout de LLC para estabelecimento de link RDMA

Não está em uso.

0x03000000

Impossível obter endereços IP corretos

O endereço IP para o socket CLC não pode ser recuperado ao criar uma proposta de conexão SMC. Verifique se a conexão CLC baseada em TCP e os dispositivos correspondentes funcionam corretamente.

0x03010000

O par não suporta SMC

O par não inclui sinalizadores de opção TCP SMC nos pacotes SYN ou SYN-ACK durante o handshake TCP. Verifique se as pilhas de protocolo em ambos os lados foram substituídas por SMC. Execute smcss para verificar o status da conexão SMC.

0x03020000

IPsec não suportado pelo SMC

Não utilize IPsec com conexões SMC.

0x03030000

Nenhum dispositivo SMC-D ou SMC-R disponível

Causa 1: Nenhum dispositivo RDMA disponível. Execute smcr d para verificar. Para eRDMA, certifique-se de que as ERIs estão configuradas no console ECS e os drivers instalados. Causa 2: Com múltiplas NICs, a NIC usada para SMC-R não possui capacidade eRDMA. Execute ibv_devinfo para obter GUIDs de dispositivo eRDMA e ip addr para obter endereços MAC da NIC, e então compare-os. Causa 3: Dispositivos RDMA operando em modo exclusivo. Execute rdma system para verificar. Se netns exclusive aparecer, mova o dispositivo com rdma dev set <device> netns <namespace>. Para dispositivos RDMA over Converged Ethernet (RoCE) ou Internet Wide Area RDMA Protocol (iWARP), mova também os dispositivos Ethernet. Causa 4: Um cliente tentou substituir uma conexão AF_INET6 por SMC. O eRDMA usa SMCv2, que não suporta AF_INET6. Altere a aplicação para AF_INET.

0x03030001

Nenhum dispositivo SMC-D disponível

O Alibaba Cloud não fornece dispositivos SMC-D. Entre em contato com o suporte técnico.

0x03030002

Nenhum dispositivo SMC-R disponível

Causa 1: O dispositivo RDMA selecionado tornou-se inválido durante o estabelecimento da conexão. Execute smcr d para verificar. Para eRDMA, certifique-se de que as ERIs estão configuradas e os drivers instalados. Causa 2: Com múltiplas NICs, a NIC usada para SMC-R não possui capacidade eRDMA. Execute ibv_devinfo e ip addr para comparar GUIDs de dispositivo e endereços MAC da NIC. Causa 3: Dispositivos RDMA em modo exclusivo. Execute rdma system para verificar. Mova o dispositivo para o namespace de rede correto com rdma dev set.

0x03030003

Dispositivos SMC-D não suportam ISMv2

O Alibaba Cloud não fornece dispositivos SMC-D. Entre em contato com o suporte técnico.

0x03030004

O par não suporta a extensão SMCv2

O host local usa SMCv2, mas o par não. eRDMA e RoCE v2 usam SMCv2. Certifique-se de que ambos os hosts usam o mesmo tipo de dispositivo RDMA. Execute smcr d para verificar os tipos de dispositivo — a coluna Type mostra valores como RoCE_Express, RoCE_Express2 ou 0x107f (Alibaba Cloud eRDMA).

0x03030005

O par não suporta a extensão SMC-D v2

O Alibaba Cloud não fornece dispositivos SMC-D. Entre em contato com o suporte técnico.

0x03030006

O par não tem ID empresarial do sistema (SEID)

Não está em uso.

0x03030007

Nenhum dispositivo SMC-D v2 disponível

O Alibaba Cloud não fornece dispositivos SMC-D. Entre em contato com o suporte técnico.

0x03030008

O par não tem ID empresarial definido pelo usuário (UEID)

O SMCv2 requer um UEID. Execute smcr ueid {show &#124; add &#124; del} para configurar o mesmo UEID em ambos os hosts.

0x03030009

Falha na negociação de versão SMC

A versão SMC negociada mudou durante o handshake CLC. Certifique-se de que ambos os hosts executam a mesma distribuição de sistema operacional.

0x0303000a

Falha na negociação de máx. de conexões por LGR

O SMCv2.1 negocia o número máximo de conexões por grupo de links (LGR). Uma reversão ocorre se o valor negociado for zero ou exceder o máximo local. Certifique-se de que ambos os hosts executam a mesma distribuição de sistema operacional.

0x0303000b

Falha na negociação de máx. de links por LGR

O SMCv2.1 negocia o número máximo de links por LGR. Uma reversão ocorre se o valor negociado for zero ou exceder o máximo local. Certifique-se de que ambos os hosts executam a mesma distribuição de sistema operacional.

0x0303000c

Falha na negociação de recurso de fornecedor SMC

O recurso de fornecedor mudou durante o handshake CLC. Certifique-se de que ambos os hosts executam a mesma distribuição de sistema operacional. No kernel 5.10.134-015, não altere sysctl net.smc.vendor_exp_options durante o estabelecimento da conexão. No kernel 5.10.134-016 ou posterior, não altere sysctl net.smc.experiment_vendor_options.

0x03040000

Host local e par usam modos de dispositivo SMC diferentes (SMC-D vs. SMC-R)

O Alibaba Cloud não fornece dispositivos SMC-D. Entre em contato com o suporte técnico.

0x03050000

O par tem eyecatcher RMBE

Não aplicável para Linux.

0x03060000

MSG_FASTOPEN não suportado pelo SMC

Remova o sinalizador MSG_FASTOPEN ao criar sockets SMC.

0x03070000

Prefixo IP ou sub-rede diferente entre hosts

Dispositivos RoCEv1 usam SMCv1, que suporta apenas comunicação na mesma sub-rede. Certifique-se de que ambos os hosts estão na mesma sub-rede. Dispositivos eRDMA usam SMCv2 e não estão sujeitos a essa restrição.

0x03080000

Impossível obter o VLAN ID

O SMC não consegue recuperar o VLAN ID do dispositivo durante o estabelecimento da conexão. Verifique se a conexão TCP e os dispositivos Ethernet funcionam corretamente.

0x03090000

Impossível registrar o VLAN ID em um dispositivo ISM

O Alibaba Cloud não fornece dispositivos SMC-D. Entre em contato com o suporte técnico.

0x030a0000

Nenhum link RDMA SMC-R no grupo de links

A conexão não conseguiu obter um link de seu LGR. Execute smcr d para verificar o status da RNIC. Para eRDMA, certifique-se de que as ERIs estão configuradas e os drivers instalados.

0x030b0000

O cliente não encontra os links RDMA do servidor

O cliente busca links RDMA usando o número de par de filas (QPN), identificador global (GID) e endereço MAC fornecidos pelo servidor. Se nenhum link correspondente for encontrado, a conexão não poderá usar RDMA. Execute smcr d para verificar o status da RNIC. Para eRDMA, certifique-se de que as ERIs estão configuradas e os drivers instalados.

0x030c0000

Falha na negociação de versão SMC

A versão SMC negociada é inaceitável. Certifique-se de que ambos os hosts executam a mesma distribuição de sistema operacional.

0x030d0000

Número máximo de DMBs SMC-D atingido

O Alibaba Cloud não fornece dispositivos SMC-D. Entre em contato com o suporte técnico.

0x030e0000

Falha na conexão SMC-R V2

Durante o estabelecimento da conexão SMCv2, o cliente não consegue encontrar informações de roteamento para os endereços IP do par. Verifique se a conexão TCP, NICs Ethernet, configuração de IP e configuração de roteamento estão corretos e acessíveis.

0x030f0000

Incompatibilidade de sinalizador de conexão indireta

Durante o estabelecimento da conexão SMCv2, o cliente detecta uma incompatibilidade entre o sinalizador de gateway do servidor e as informações de roteamento locais. Verifique se a conexão TCP, NICs Ethernet, configuração de IP e configuração de roteamento estão corretos e usam o mesmo caminho de rede.

0x04000000

Servidor e cliente usam grupos de links diferentes

O servidor reutiliza um LGR, mas o cliente deseja criar um novo. Execute smcr d para verificar o status da RNIC. Para eRDMA, certifique-se de que as ERIs estão configuradas e os drivers instalados.

0x05000000

O par rejeitou o handshake

O par enviou uma mensagem CLC rejeitando a conexão RDMA. Execute smcss, localize a conexão pela sua quíntupla e verifique o código de causa do par.

0x09990000

Falha na criação de recurso RDMA

Recursos RDMA não puderam ser criados ou inicializados. Use uma ferramenta de monitoramento RDMA para verificar estatísticas de erro. Para eRDMA, execute eadm stat.

0x09990001

Falha no RToken RDMA

Trata-se de um problema na pilha de protocolo SMC. Entre em contato com o suporte técnico.

0x09990002

Falha na inicialização do par de filas (QP) RDMA

O SMC chama interfaces de verbos InfiniBand (IB) para inicializar o QP e ocorreu um erro. Execute smcr d para verificar dispositivos SMC-R. Para eRDMA, certifique-se de que as ERIs estão configuradas e os drivers instalados.

0x09990003

Falha no registro de região de memória (MR)

O número ou tamanho das MRs excede as especificações do dispositivo RDMA. Execute ibv_devinfo -d <device> -v &#124; grep max_mr para verificar limites — max_mr é a contagem máxima e max_mr_size é o tamanho máximo. Isso geralmente significa que o limite de contagem de MR foi atingido. Reduza o número de conexões SMC.

0x09990004

Falha na inicialização de crédito de controle de fluxo SMC

RNICs ou links RDMA falharam, impedindo o envio de mensagens de crédito. Verifique se as RNICs funcionam corretamente.

Ferramentas de O&M de rede mostram dados inesperados após ativar o SMC

Após ativar o SMC, ferramentas como tcpdump, Wireshark, ss e netstat mostram tráfego de rede que não corresponde às expectativas ou falham em capturar o tráfego esperado.

O SMC-R baseia-se em RDMA. Essas ferramentas analisam apenas tráfego TCP e não conseguem visualizar pacotes RDMA.

Utilize ferramentas específicas para RDMA. Consulte Monitorar e verificar eRDMA.

Módulo SMC inutilizável em instâncias aceleradas por GPU ou SCC

O módulo SMC carregado em uma instância acelerada por GPU ou Super Computing Cluster (SCC) não funciona.

Esses tipos de instância possuem drivers Mellanox OpenFabrics Enterprise Distribution (OFED) instalados. A pilha OFED inclui seu próprio módulo SMC que é carregado automaticamente, mas não funciona. Após instalar drivers Mellanox OFED, os símbolos de função RDMA mudam e o módulo SMC do kernel falha ao carregar com um erro Unknown symbol.

Não é possível usar SMC em instâncias aceleradas por GPU ou SCC com Alibaba Cloud Linux 3.

Algumas opções SOL_SOCKET e SOL_TCP não funcionam após ativar o SMC

Após substituir TCP por SMC, algumas opções setsockopt e getsockopt no nível SOL_SOCKET ou SOL_TCP não podem ser configuradas, não podem ser recuperadas ou não funcionam conforme o esperado.

O SMC usa buffers compartilhados e um design de pilha de protocolo diferente do TCP. Algumas opções de socket são incompatíveis com esse design.

Níveis de suporte:

  • Y: Totalmente suportado. A opção pode ser definida, recuperada e funciona conforme o esperado.

  • M: Configurável, mas pode não funcionar conforme o esperado devido a diferenças de design entre SMC e TCP.

  • N: Não suportado. O uso da opção causa uma reversão para TCP com o código de causa 0x03060000 ou 0x03010001.

Opções SOL_SOCKET

Opção

Suporte

SO_DEBUG

Y

SO_REUSEADDR

Y

SO_TYPE

Y

SO_ERROR

Y

SO_DONTROUTE

M

SO_BROADCAST

M

SO_SNDBUF

Y

SO_RCVBUF

Y

SO_SNDBUFFORCE

Y

SO_RCVBUFFORCE

Y

SO_KEEPALIVE

M

SO_OOBINLINE

M

SO_NO_CHECK

M

SO_PRIORITY

M

SO_LINGER

Y

SO_BSDCOMPAT

M

SO_REUSEPORT

Y

SO_PASSCRED

M

SO_PEERCRED

M

SO_RCVLOWAT

M

SO_SNDLOWAT

M

SO_RCVTIMEO_OLD

Y

SO_SNDTIMEO_OLD

Y

SO_SECURITY_AUTHENTICATION

N

SO_SECURITY_ENCRYPTION_TRANSPORT

N

SO_SECURITY_ENCRYPTION_NETWORK

N

SO_BINDTODEVICE

N

SO_ATTACH_FILTER

M

SO_DETACH_FILTER

M

SO_PEERNAME

Y

SO_ACCEPTCONN

M

SO_PEERSEC

N

SO_PASSSEC

M

SO_MARK

M

SO_PROTOCOL

Y

SO_DOMAIN

Y

SO_RXQ_OVFL

M

SO_WIFI_STATUS

M

SO_PEEK_OFF

N

SO_NOFCS

M

SO_LOCK_FILTER

Y

SO_SELECT_ERR_QUEUE

M

SO_BUSY_POLL

M

SO_MAX_PACING_RATE

M

SO_BPF_EXTENSIONS

Y

SO_INCOMING_CPU

M

SO_ATTACH_BPF

M

SO_ATTACH_REUSEPORT_CBPF

M

SO_ATTACH_REUSEPORT_EBPF

N

SO_CNX_ADVICE

M

SO_MEMINFO

M

SO_INCOMING_NAPI_ID

M

SO_COOKIE

Y

SO_PEERGROUPS

N

SO_ZEROCOPY

N

SO_TXTIME

M

SO_BINDTOIFINDEX

N

SO_TIMESTAMP_OLD

M

SO_TIMESTAMPNS_OLD

M

SO_TIMESTAMPING_OLD

M

SO_TIMESTAMP_NEW

M

SO_TIMESTAMPNS_NEW

M

SO_TIMESTAMPING_NEW

M

SO_RCVTIMEO_NEW

Y

SO_SNDTIMEO_NEW

Y

SO_DETACH_REUSEPORT_BPF

N

Opções SOL_TCP

Opção

Suporte

TCP_NODELAY

Y

TCP_MAXSEG

M

TCP_CORK

Y

TCP_KEEPIDLE

M

TCP_KEEPINTVL

M

TCP_KEEPCNT

M

TCP_SYNCNT

M

TCP_LINGER2

M

TCP_DEFER_ACCEPT

Y

TCP_WINDOW_CLAMP

M

TCP_INFO

M

TCP_QUICKACK

M

TCP_CONGESTION

M

TCP_MD5SIG

Y

TCP_THIN_LINEAR_TIMEOUTS

M

TCP_THIN_DUPACK

M

TCP_USER_TIMEOUT

M

TCP_REPAIR

M

TCP_REPAIR_QUEUE

M

TCP_QUEUE_SEQ

M

TCP_REPAIR_OPTIONS

M

TCP_FASTOPEN

N

TCP_TIMESTAMP

M

TCP_NOTSENT_LOWAT

M

TCP_CC_INFO

M

TCP_SAVE_SYN

Y

TCP_SAVED_SYN

Y

TCP_REPAIR_WINDOW

M

TCP_FASTOPEN_CONNECT

N

TCP_ULP

N

TCP_MD5SIG_EXT

Y

TCP_FASTOPEN_KEY

N

TCP_FASTOPEN_NO_COOKIE

N

TCP_ZEROCOPY_RECEIVE

N

TCP_CM_INQ/TCP_INQ

M

TCP_TX_DELAY

M