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.
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.
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.
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 rCommand 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.
| Comando | Código | Finalidade |
|---|---|---|
| CER / CEA | 257 | Capabilities-Exchange — negociar as aplicações suportadas na conexão |
| DWR / DWA | 280 | Device-Watchdog — verificação de atividade do peer / keepalive (RFC 3539) |
| DPR / DPA | 282 | Disconnect-Peer — encerramento ordenado da conexão |
| RAR / RAA | 258 | Re-Auth — o servidor pede ao cliente que reautorize uma sessão |
| STR / STA | 275 | Session-Termination — o cliente encerra uma sessão autorizada |
| ASR / ASA | 274 | Abort-Session — o servidor força o encerramento de uma sessão |
| ACR / ACA | 271 | Accounting-Request/Answer (accounting básico) |
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.
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.
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
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.
Especificações de origem
Os padrões publicados nos quais esta página se baseia. Abre num novo separador.