BroadNet
DIAMETERFundamentos

Protocolo base DIAMETER: RFC 6733 explicado

Atualizado em 5 min de leituraBaseado em padrões
Resposta direta

O DIAMETER (IETF RFC 6733) é o protocolo AAA e de sinalização para LTE, IMS e interworking 5G. Transporta pares de comando request/answer — cada um um cabeçalho de 20 bytes mais AVPs — sobre SCTP ou TCP com TLS. Os pares negociam capacidades com CER/CEA, monitorizam a atividade com DWR/DWA e encerram de forma limpa com DPR/DPA.

§01

O que é o DIAMETER

O DIAMETER é o protocolo base de autenticação, autorização e contabilização (AAA) definido pela IETF na RFC 6733, e o transporte que o 3GPP escolheu para o plano de controlo do LTE e do IMS. Substituiu o RADIUS nas grandes redes de operador e é, no lado dos pacotes, o par do SS7/MAP no lado legado — transportando gestão de subscrição e mobilidade (S6a para o HSS), política e tarifação (Gx, Gy) e registo IMS (Cx/Dx). Tudo corre como pares de comando request/answer entre pares nomeados, identificados por uma Diameter Identity (um FQDN) e agrupados em realms.

§02

O cabeçalho de mensagem

Cada mensagem DIAMETER começa com um cabeçalho fixo de 20 octetos seguido por uma lista variável de AVPs. O cabeçalho transporta uma Version (sempre 1), um Message Length de 24 bits, um octeto de Command Flags, um Command Code de 24 bits, um Application-Id de 32 bits que nomeia a aplicação a que a mensagem pertence, e dois identificadores. O Hop-by-Hop Identifier associa um request à sua answer entre dois pares adjacentes e é reescrito por cada proxy; o End-to-End Identifier é definido pelo originador, preservado inalterado ao longo do caminho, e usado para detetar duplicados.

Cabeçalho de mensagem DIAMETER da RFC 6733 (20 octetos)text
0                   1                   2                   3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Version=1    |            Message Length (24)             |
| Command Flags |            Command Code (24)               |
|                    Application-Id (32)                     |
|                 Hop-by-Hop Identifier (32)                 |
|                 End-to-End Identifier (32)                 |
|  AVPs ...                                                  |
Command Flags:  R P E T r r r r
§03

Command flags e command codes

Um Command Code mais o Application-Id nomeia a operação; a answer reutiliza o mesmo command code com o bit Request apagado. Quatro command flags carregam a semântica da mensagem. R (Request) distingue um request de uma answer. P (Proxiable) indica que a mensagem pode ser proxied, retransmitida ou redirecionada em vez de tratada localmente. E (Error) marca uma answer de erro de protocolo. T (potentially re-transmitted) marca um request reenviado após uma falha de ligação, para que o recetor se possa proteger contra duplicados. O protocolo base define os comandos de manutenção; aplicações como S6a, Gx e Cx definem os seus próprios command codes por cima.

Command codes base do DIAMETER (RFC 6733)
ComandoCódigoFinalidade
CER / CEA257Capabilities-Exchange — negociar as aplicações suportadas na conexão
DWR / DWA280Device-Watchdog — verificação de atividade do peer / keepalive (RFC 3539)
DPR / DPA282Disconnect-Peer — encerramento ordenado da conexão
RAR / RAA258Re-Auth — o servidor pede ao cliente que reautorize uma sessão
STR / STA275Session-Termination — o cliente encerra uma sessão autorizada
ASR / ASA274Abort-Session — o servidor força o encerramento de uma sessão
ACR / ACA271Accounting-Request/Answer (accounting básico)
§04

Troca de capacidades: CER / CEA

Imediatamente após a abertura de uma ligação de transporte, os dois pares trocam um Capabilities-Exchange-Request e Answer (comando 257, Application-Id 0). Cada lado anuncia o seu Origin-Host e Origin-Realm, o seu Host-IP-Address, um Vendor-Id e — o que é crucial — o conjunto de aplicações que suporta através dos AVPs Auth-Application-Id, Acct-Application-Id e Vendor-Specific-Application-Id. Se os pares não partilharem nenhuma aplicação comum, a ligação é recusada. O CER/CEA é como um nó descobre se o par consegue falar S6a, Gx ou Cx antes de fluir qualquer tráfego de aplicação, e acontece exatamente uma vez por ligação.

§05

Keepalive e encerramento: DWR / DPR

O DIAMETER usa o watchdog da RFC 3539 para detetar um par morto mais depressa do que o transporte o faria por si só. Quando uma ligação está inativa, um par envia um Device-Watchdog-Request (comando 280) e espera um Device-Watchdog-Answer dentro do intervalo de watchdog; falhas repetidas movem o par para um estado de falha e o tráfego é reencaminhado para uma alternativa. Para fechar uma ligação deliberadamente — por manutenção ou reconfiguração — um par envia um Disconnect-Peer-Request (comando 282) com uma Disconnect-Cause (REBOOTING, BUSY ou DO_NOT_WANT_TO_TALK_TO_YOU), deixando o outro lado decidir se se deve voltar a ligar.

§06

Transporte: SCTP e TCP com TLS

A RFC 6733 exige o suporte tanto de SCTP (RFC 4960) como de TCP, com o SCTP preferido para sinalização porque o seu multi-streaming evita o head-of-line blocking e o seu multi-homing dá redundância de caminho. A porta bem conhecida é a 3868. A segurança é dada por TLS sobre TCP ou DTLS sobre SCTP; dentro de um domínio de operador de confiança, muitas implementações correm IPsec na camada de rede em alternativa. O DIAMETER não tem autenticação de mensagem in-band própria, e é por isso que a segurança do transporte e a filtragem na borda discutidas em segurança de roaming DIAMETER são importantes.

Perguntas frequentes

Perguntas frequentes

O que é o protocolo base DIAMETER?

É o protocolo AAA e de sinalização definido na IETF RFC 6733, usado como transporte do plano de controlo para LTE, IMS e interworking 5G. Transporta pares de comando request/answer — um cabeçalho de 20 bytes mais AVPs — sobre SCTP ou TCP com TLS, e define troca de capacidades, keepalive por watchdog e desconexão ordenada.

O que significam as flags R, P, E e T?

R marca um Request (apagada na answer). P marca a mensagem como Proxiable — pode ser retransmitida, proxied ou redirecionada. E marca uma answer de Error. T marca um request como potencialmente retransmitido após um failover, para que o recetor possa detetar um duplicado usando o End-to-End Identifier.

Qual é a diferença entre o Hop-by-Hop e o End-to-End Identifier?

O Hop-by-Hop Identifier associa um request à sua answer entre dois pares adjacentes e é reescrito por cada proxy. O End-to-End Identifier é definido uma vez pelo originador, preservado inalterado ao longo de todo o caminho, e usado para detetar mensagens duplicadas após uma retransmissão.

Para que serve a troca CER/CEA?

O Capabilities-Exchange-Request/Answer (comando 257) corre uma vez quando uma ligação abre. Os pares anunciam a sua identidade e as aplicações DIAMETER que suportam (Auth-Application-Id, Vendor-Specific-Application-Id). Se nenhuma aplicação for partilhada, a ligação é recusada, pelo que ambos os lados sabem à partida se conseguem falar S6a, Gx ou Cx.

Que porta e transporte usa o DIAMETER?

O DIAMETER usa a porta bem conhecida 3868 sobre SCTP ou TCP, com o SCTP preferido para sinalização devido ao multi-streaming e ao multi-homing. A segurança é TLS sobre TCP ou DTLS sobre SCTP; dentro de um domínio de operador de confiança é comum usar antes IPsec na camada de rede.

Como deteta um par DIAMETER que o seu parceiro falhou?

Usa o device watchdog da RFC 3539: numa ligação inativa, um par envia um Device-Watchdog-Request (comando 280) e espera um Device-Watchdog-Answer dentro do intervalo de watchdog. Answers falhadas repetidas movem o par para um estado de falha e o tráfego é reencaminhado para um par alternativo.

Referências

Especificações de origem

Os padrões publicados nos quais esta página se baseia. Abre num novo separador.

BNMantido pela equipa de engenharia BroadNet·Mensagens de nível de operadora desde 2003
Coloque-o no fio.

Construa com uma vinculação SMPP real e uma API REST.

Solicite acesso de teste com chaves de teste reais: envie primeiro para o seu próprio número verificado e, em seguida, passe para o ambiente de produção em mais de 200 países assim que a sua identidade de remetente e rotas forem aprovadas.