Diâmetro (protocolo) - Diameter (protocol)

Diameter é um protocolo de autenticação, autorização e contabilidade para redes de computadores. Ele evoluiu do protocolo RADIUS anterior . Ele pertence aos protocolos da camada de aplicativo no conjunto de protocolos da Internet .

Os aplicativos de diameter estendem o protocolo de base, adicionando novos comandos e / ou atributos, como aqueles para uso com o protocolo de autenticação extensível (EAP).

Comparação com RADIUS

O nome é um jogo de palavras, derivado do protocolo RADIUS , que é o predecessor (um diâmetro é o dobro do raio). Diâmetro não é diretamente compatível com versões anteriores, mas fornece um caminho de atualização para RADIUS. Os principais recursos fornecidos pelo diameter, mas faltando no RADIUS são:

  • Suporte para SCTP
  • Capacidade de negociação
  • Reconhecimentos da camada de aplicativo ; Diameter define métodos de failover e máquinas de estado ( RFC 3539 )
  • Extensibilidade; novos comandos podem ser definidos
  • Alinhado em limites de 32 bits

Além disso: Como o RADIUS, ele foi projetado para funcionar em situações AAA locais e em roaming. Ele usa TCP ou SCTP, ao contrário de RADIUS, que usa UDP. Ao contrário do RADIUS, ele não inclui criptografia, mas pode ser protegido por segurança de nível de transporte (IPSEC ou TLS). O tamanho básico do identificador AV é de 32 bits, ao contrário do RADIUS, que usa 8 bits como o tamanho do identificador AV básico. Como o RADIUS, ele suporta modos tanto sem estado quanto com estado. Como o RADIUS, ele suporta o reconhecimento da camada de aplicativo e define o failover. O diameter é usado para muitas interfaces diferentes definidas pelos padrões 3GPP, com cada interface tipicamente definindo novos comandos e atributos.

Formulários

Um aplicativo diameter não é um aplicativo de software, mas é um protocolo baseado no protocolo de base diameter definido na RFC 6733 e RFC 7075 (Obsoletes: RFC 3588 ). Cada aplicativo é definido por um identificador de aplicativo e pode adicionar novos códigos de comando e / ou novos AVPs obrigatórios ( Par Atributo-Valor ). Adicionar um novo AVP opcional não requer um novo aplicativo.

Exemplos de aplicações de diameter:

Tanto o HSS quanto o SLF se comunicam usando o protocolo diameter.

(Arquitetura Genérica de Bootstrapping): Função de Servidor de Bootstrapping

História

O protocolo Diameter foi inicialmente desenvolvido por Pat R. Calhoun, Glen Zorn e Ping Pan em 1998 para fornecer uma estrutura para autenticação, autorização e contabilidade ( AAA ) que pudesse superar as limitações do RADIUS. O RADIUS teve problemas com confiabilidade, escalabilidade, segurança e flexibilidade. O RADIUS não consegue lidar de forma eficaz com acesso remoto, mobilidade de IP e controle de políticas. O protocolo diameter define um protocolo de política usado por clientes para executar política, AAA e controle de recursos. Isso permite que um único servidor controle políticas para muitos serviços.

Como o RADIUS, o diameter fornece a funcionalidade AAA, mas usa TCP e SCTP em vez de UDP , portanto, delegando detecção e tratamento de problemas de comunicação para esses protocolos. O protocolo diameter é aprimorado ainda mais com o desenvolvimento do Subsistema de Multimídia IP (IMS) do Projeto de Parceria de 3ª Geração (3GPP ). As interfaces S6a, S6b, Gx, Gy, Sy, Rx, Cx, Dh, Dx, Rf, Ro, Sh e Zh são suportadas por aplicativos de diameter. Através do uso de extensões, o protocolo foi projetado para ser extensível para suportar proxies, corretores, segurança forte, IP móvel, servidores de acesso à rede (NASREQ), contabilidade e gerenciamento de recursos.

Descrição do protocolo

O protocolo de base diameter é definido pela RFC 6733 (Obsoletes: RFC 3588 e RFC 5719 ) e define os requisitos mínimos para um protocolo AAA . As aplicações de diameter pode estender o protocolo básico, adicionando novos comandos, atributos ou ambos. A segurança de diameter é fornecida por IPsec ou TLS . A IANA atribuiu o número de porta 3868 do TCP e do SCTP ao diameter, conforme declarado na seção 11.4 da RFC 6733 .

Formato de pacote

O pacote consiste em um cabeçalho de diameter e um número variável de pares de atributo-valor, ou AVPs, para encapsular informações relevantes para a mensagem de diameter.

Diâmetro Cabeçalho
Deslocamento de bit  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 versão comprimento da mensagem
32 R P E T         código de comando
64 ID do aplicativo
96 salto a salto ID
128 ID ponta a ponta
160
...
AVPs
...

Versão

Este campo indica a versão do protocolo de base diameter. Em 2014, o único valor compatível é 1.

Comprimento da Mensagem

O campo Message Length indica o comprimento da mensagem Diameter em bytes, incluindo os campos de cabeçalho e os AVPs preenchidos.

Sinalizadores de comando

O bit " R " (Solicitação) - Se definido, a mensagem é uma solicitação. Se desmarcada, a mensagem é uma resposta.

O bit " P " (Proxiable) - Se definido, a mensagem PODE ser transmitida por proxy, retransmitida ou redirecionada. Se desmarcada, a mensagem DEVE ser processada localmente.

O bit " E " (Erro) - Se definido, a mensagem conterá um erro de protocolo e não estará em conformidade com o CCF descrito para este comando. As mensagens com o conjunto de bits "E" são comumente chamadas de mensagens de erro. Este bit NÃO DEVE ser definido nas mensagens de solicitação.

O bit " T " (mensagem potencialmente retransmitida) - este sinalizador é definido após um procedimento de failover de link, para ajudar na remoção de solicitações duplicadas. É definido ao reenviar solicitações ainda não reconhecidas como uma indicação de uma possível duplicação devido a uma falha de link.

Comandos

Cada par de solicitação / resposta de comando é atribuído a um código de comando. Se é a solicitação ou resposta, é identificado por meio do bit 'R' no campo Sinalizadores de comando do cabeçalho.

Os valores 0-255 são reservados para compatibilidade com versões anteriores RADIUS. Os valores 256-16777213 são para comandos padrão permanentes alocados pela IANA . Os valores 16777214 e 16777215 (hex 0xFFFFFE e 0xFFFFFF) são reservados para fins experimentais e de teste.

Um código de comando é usado para determinar a ação a ser executada para uma mensagem específica. Alguns comandos de diameter comuns definidos no protocolo (base e aplicativos) são:

Nome do Comando Abr. Código Inscrição
Pedido AA AAR 265 Aplicativo NAS do diameter - RFC 7155
Resposta AA AAA 265 Aplicativo NAS do diameter - RFC 7155
Diameter-EAP-Request DER 268 Aplicação Diameter EAP - RFC 4072
Diâmetro-EAP-Resposta DEA 268 Aplicação Diameter EAP - RFC 4072
Abort-Session-Request ASR 274 Diâmetro base
Abort-Session-Answer COMO UM 274 Diâmetro base
Solicitação de contabilidade ACR 271 Diâmetro base
Contabilidade-Resposta ACA 271 Diâmetro base
Solicitação de controle de crédito CCR 272 Aplicativo de controle de crédito de diameter - RFC 8506 (Obsoletes RFC 4006 )
Resposta de controle de crédito CCA 272 Aplicativo de controle de crédito de diameter - RFC 8506 (Obsoletes RFC 4006 )
Capabilities-Exchange-Request CER 257 Diâmetro base
Capabilities-Exchange-Answer CEA 257 Diâmetro base
Device-Watchdog-Request DWR 280 Diâmetro base
Dispositivo-Watchdog-Answer DWA 280 Diâmetro base
Disconnect-Peer-Request DPR 282 Diâmetro base
Disconnect-Peer-Answer DPA 282 Diâmetro base
Solicitação de re-autenticação RAR 258 Diâmetro base
Re-Auth-Answer RAA 258 Diâmetro base
Solicitação de encerramento de sessão STR 275 Diâmetro base
Sessão-Terminação-Resposta STA 275 Diâmetro base
Solicitação de autorização do usuário UAR 283 Aplicação Diameter SIP - RFC 4740
Resposta de autorização do usuário UAA 283 Aplicação Diameter SIP - RFC 4740
Solicitação de atribuição de servidor SAR 284 Aplicação Diameter SIP - RFC 4740
Servidor-Atribuição-Resposta SAA 284 Aplicação Diameter SIP - RFC 4740
Pedido de informação de localização LIR 285 Aplicação Diameter SIP - RFC 4740
Localização-Informação-Resposta LIA 285 Aplicação Diameter SIP - RFC 4740
Solicitação de autenticação de multimídia MAR 286 Aplicação Diameter SIP - RFC 4740
Resposta de autenticação de multimídia MAA 286 Aplicação Diameter SIP - RFC 4740
Pedido de rescisão de registro RTR 287 Aplicação Diameter SIP - RFC 4740
Registro-Rescisão-Resposta RTA 287 Aplicação Diameter SIP - RFC 4740
Push-Profile-Request PPR 288 Aplicação Diameter SIP - RFC 4740
Push-Profile-Answer PPA 288 Aplicação Diameter SIP - RFC 4740
Solicitação de autorização do usuário UAR 300 Base de diâmetro (3GPP) RFC 3589
Resposta de autorização do usuário UAA 300 Base de diâmetro (3GPP) RFC 3589
Solicitação de atribuição de servidor SAR 301 Base de diâmetro (3GPP) RFC 3589
Servidor-Atribuição-Resposta SAA 301 Base de diâmetro (3GPP) RFC 3589
Pedido de informação de localização LIR 302 Base de diâmetro (3GPP) RFC 3589
Localização-Informação-Resposta LIA 302 Base de diâmetro (3GPP) RFC 3589
Solicitação de autenticação de multimídia MAR 303 Base de diâmetro (3GPP) RFC 3589
Resposta de autenticação de multimídia MAA 303 Base de diâmetro (3GPP) RFC 3589
Pedido de rescisão de registro RTR 304 Base de diâmetro (3GPP) RFC 3589
Registro-Rescisão-Resposta RTA 304 Base de diâmetro (3GPP) RFC 3589
Push-Profile-Request PPR 305 Base de diâmetro (3GPP) RFC 3589
Push-Profile-Answer PPA 305 Base de diâmetro (3GPP) RFC 3589
Solicitação de dados do usuário UDR 306 Base de diâmetro (3GPP) RFC 3589
Resposta de dados do usuário UDA 306 Base de diâmetro (3GPP) RFC 3589
Solicitação de atualização de perfil PUR 307 Base de diâmetro (3GPP) RFC 3589
Perfil-Atualização-Resposta PUA 307 Base de diâmetro (3GPP) RFC 3589
Solicitação de notificações de assinatura SNR 308 Base de diâmetro (3GPP) RFC 3589
Subscrever-Notificações-Resposta SNA 308 Base de diâmetro (3GPP) RFC 3589
Push-Notification-Request PNR 309 Base de diâmetro (3GPP) RFC 3589
Push-Notification-Answer PNA 309 Base de diâmetro (3GPP) RFC 3589
Bootstrapping-Info-Request BIR 310 Base de diâmetro (3GPP) RFC 3589
Bootstrapping-Info-Answer BIA 310 Base de diâmetro (3GPP) RFC 3589
Message-Process-Request MPR 311 Base de diâmetro (3GPP) RFC 3589
Mensagem-Processo-Resposta MPA 311 Base de diâmetro (3GPP) RFC 3589
Update-Location-Request ULR 316 3GPP TS 29.272 [ RFC 5516 ]
Atualizar-Localização-Resposta ULA 316 3GPP TS 29.272 [ RFC 5516 ]
Cancel-Location-Request CLR 317 3GPP TS 29.272 [ RFC 5516 ]
Cancelar-Localização-Resposta CLA 317 3GPP TS 29.272 [ RFC 5516 ]
Authentication-Information-Request AR 318 3GPP TS 29.272 [ RFC 5516 ]
Autenticação-Informação-Resposta AIA 318 3GPP TS 29.272 [ RFC 5516 ]
Insert-Subscriber-Data-Request IDR 319 3GPP TS 29.272 [ RFC 5516 ]
Inserir-Assinante-Dados-Resposta IDA 319 3GPP TS 29.272 [ RFC 5516 ]
Delete-Subscriber-Data-Request DSR 320 3GPP TS 29.272 [ RFC 5516 ]
Delete-Subscriber-Data-Answer DSA 320 3GPP TS 29.272 [ RFC 5516 ]
Purge-UE-Request POR 321 3GPP TS 29.272 [ RFC 5516 ]
Purge-UE-Answer ERVILHA 321 3GPP TS 29.272 [ RFC 5516 ]
Solicitação de Notificação NR 323 3GPP TS 29.272 [ RFC 5516 ]
Notificar-Resposta N / D 323 3GPP TS 29.272 [ RFC 5516 ]
Provide-Location-Request PLR 8388620 3GPP-LCS-SLg (Application-ID 16777255)
Fornecer-Localização-Resposta PLA 8388620 3GPP-LCS-SLg (Application-ID 16777255)
Solicitação de informações de roteamento RIR 8388622 3GPP-LCS-SLh (Application-ID 16777291)
Routing-Info-Answer RIA 8388622 3GPP-LCS-SLh (Application-ID 16777291)
AA-Mobile-Node-Request AMR 260 Diameter Mobile IPv4 - RFC 4004
AA-Mobile-Node-Answer AMA 260 Diameter Mobile IPv4 - RFC 4004
Home-Agent-MIP-Request HAR 262 Diameter Mobile IPv4 - RFC 4004
Home-Agent-MIP-Answer HAA 262 Diameter Mobile IPv4 - RFC 4004
Configuração-Solicitação de Informação CIR 8388718 S6t por 3GPP TS 29.336
Configuração-Informação-Resposta CIA 8388718 S6t por 3GPP TS 29.336
Reporting-Information-Request RIR 8388719 S6t por 3GPP TS 29.336
Relatório-Informação-Resposta RIA 8388719 S6t por 3GPP TS 29.336
NIDD-Information-Request NIR 8388726 S6t por 3GPP TS 29.336
NIDD-Information-Answer NIA 8388726 S6t por 3GPP TS 29.336

ID do aplicativo

Application-ID é usado para identificar para qual aplicativo de diameter a mensagem é aplicável. O aplicativo pode ser um aplicativo de autenticação, um aplicativo de contabilidade ou um aplicativo específico do fornecedor.

Os agentes diameter em conformidade com uma determinada extensão diameter publicam seu suporte, incluindo um valor específico de no atributo Auth-Application-Id do comando Capabilities-Exchange-Request (CER) e Capabilities-Exchange-Answer (CEA).

O valor do campo Application-ID no cabeçalho é o mesmo que qualquer AVPs de Application-Id relevantes contidos na mensagem. Por exemplo, o valor do Application-ID e do Attribute Auth-Application-Id no comando Credit-Control-Request (CCR) e Credit-Control-Answer (CCA) para o aplicativo diameter Credit-Control é 4.

ID do aplicativo Abr. Nome completo Uso
0 Base Mensagens comuns de diameter Estabelecimento / desmontagem / manutenção da associação do protocolo de diameter
16777216 Cx / Dx 3GPP Cx / Dx Interface IMS I / S-CSCF para HSS
16777217 Sh 3GPP Sh Servidor de aplicativo VoIP / IMS SIP para interface HSS
16777236 Rx 3GPP Rx Política e controle de cobrança
16777238 Gx 3GPP Gx Política e controle de cobrança
16777251 S6a / S6d 3GPP S6a / S6d Sinalização de roaming LTE
16777252 S13 3GPP 13 Interface entre EIR e MME
16777255 SLg 3GPP LCS SLg Serviços de localização
16777345 S6t 3GPP S6t Interface entre SCEF e HSS

Identificador Hop-by-Hop

O identificador de salto por salto é um campo inteiro não assinado de 32 bits (na ordem dos bytes da rede) que é usado para corresponder as solicitações com suas respostas, já que o mesmo valor na solicitação é usado na resposta.

O protocolo diameter requer que os agentes de retransmissão e proxy mantenham o estado da transação, que é usado para fins de failover. O estado da transação implica que, ao encaminhar uma solicitação, seu identificador de salto a salto é salvo; o campo é substituído por um identificador local exclusivo, que é restaurado ao seu valor original quando a resposta correspondente é recebida. O estado da solicitação é liberado após o recebimento da resposta. As respostas recebidas que não correspondem a um identificador de salto por salto conhecido são ignoradas pelo agente de diameter.

No caso de redirecionamento de agentes, o identificador Hop-by-Hop é mantido no cabeçalho conforme o agente diameter responde com uma mensagem de resposta.

Identificador End-to-End

O Identificador End-to-End é um campo inteiro não assinado de 32 bits (na ordem dos bytes da rede) que é usado para detectar mensagens duplicadas junto com a combinação do AVP Origem-Host.

Ao criar uma solicitação, o Identificador de ponta a ponta é definido com um valor exclusivo localmente. O Identificador End-to-End não é modificado por agentes diameter de qualquer tipo, e o mesmo valor na solicitação correspondente é usado na resposta.

Pares de Atributo-Valor (AVP)

AVP Header
Deslocamento de bit  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 Código AVP
32 V M P           Comprimento AVP
64 ID do fornecedor (opcional)
96
...
dados
...

Para simplificar, o bit " V " da bandeira AVP significa específico do fornecedor ; O bit " M " significa obrigatório ; O bit " P " significa protegido .

O bit " V ", conhecido como bit Vendor-Specific, indica se o campo Vendor-ID opcional está presente no cabeçalho AVP. Quando definido, o Código AVP pertence ao espaço de endereço do código do fornecedor específico.

O bit " M ", conhecido como bit obrigatório, indica se o suporte do AVP é necessário. Se um AVP com o bit " M " definido for recebido por um cliente, servidor, proxy ou agente de tradução de diameter e o AVP ou seu valor não é reconhecido, a mensagem deve ser rejeitada. Os agentes de relé de diameter e redirecionamento não devem rejeitar mensagens com AVPs não reconhecidos.

O bit " P " indica a necessidade de criptografia para segurança de ponta a ponta.

Nome do Atributo Código Tipo de dados
Acct-Interim-Interval 85 Sem sinal 32
Contabilidade - Tempo Real - Obrigatório 483 Enumerado
Conta-Multi-Sessão-Id 50 UTF8String
Número de registro contábil 485 Sem sinal 32
Tipo de registro contábil 480 Enumerado
ID de sessão de contabilidade 44 OctetString
Contabilidade-Sub-Sessão-Id 287 Sem sinal 64
Acct-Application-Id 259 Sem sinal 32
Auth-Application-Id 258 Sem sinal 32
Auth-Request-Type 274 Enumerado
Authorization-Lifetime 291 Sem sinal 32
Período de carência de autorização 276 Sem sinal 32
Auth-Session-State 277 Enumerado
Re-Auth-Request-Type 285 Enumerado
Classe 25 OctetString
Destino-Host 293 DiamIdent
Reino de Destino 283 DiamIdent
Desconectar-Causa 273 Enumerado
Sequência E2E 300 Agrupado
Mensagem de erro 281 UTF8String
Error-Reporting-Host 294 DiamIdent
Event-Timestamp 55 Tempo
Resultado Experimental 297 Agrupado
Código de Resultado Experimental 298 Sem sinal 32
AVP falhado 279 Agrupado
Revisão de Firmware 267 Sem sinal 32
Host-IP-Address 257 Endereço
Inband-Security-Id 299 Sem sinal 32
Multi-round-time-out 272 Sem sinal 32
Origin-Host 264 DiamIdent
Origin-Realm 296 DiamIdent
Origem-Estado-Id 278 Sem sinal 32
Nome do Produto 269 UTF8String
Proxy-Host 280 DiamIdent
Proxy-Info 284 Agrupado
Proxy-State 33 OctetString
Redirecionar-Host 292 DiamURI
Redirect-Host-Usage 261 Enumerado
Redirect-Max-Cache-Time 262 Sem sinal 32
Código de Resultado 268 Sem sinal 32
Registro de rota 282 DiamIdent
Identificação de sessão 263 UTF8String
Sessão expirada 27 Sem sinal 32
Session-Binding 270 Sem sinal 32
Sessão-Servidor-Failover 271 Enumerado
Supported-Vendor-Id 265 Sem sinal 32
Causa de rescisão 295 Enumerado
Nome do usuário 1 UTF8String
Vendor-Id 266 Sem sinal 32
Id do aplicativo específico do fornecedor 260 Agrupado

Máquinas de estado

O RFC 3588 define uma máquina de estado central para manter conexões entre pares e processar mensagens. Isso faz parte da funcionalidade básica do protocolo e todas as pilhas devem suportá-lo e, como tal, abstrair das operações relacionadas à conectividade.

Além disso, as máquinas de estado específicas do aplicativo podem ser introduzidas posteriormente ou em uma camada de abstração superior. O RFC 3588 define uma autorização e uma máquina de estado de contabilidade.

Fluxos de mensagens

Diameter message flow.png

A comunicação entre dois pares de diâmetro começa com o estabelecimento de uma conexão de transporte ( TCP ou SCTP ). O iniciador então envia uma Capabilities-Exchange-Request (CER) para o outro par, que responde com uma Capabilities-Exchange-Answer (CEA). Para pares compatíveis com RFC3588, o TLS (Transport Layer Security) pode ser negociado opcionalmente. Para pares compatíveis com RFC6733, a negociação TLS pode acontecer opcionalmente antes do CER / CEA.

A conexão está então pronta para a troca de mensagens do aplicativo.

Se nenhuma mensagem for trocada por algum tempo, qualquer um dos lados pode enviar um Device-Watchdog-Request (DWR) e o outro par deve responder com Device-Watchdog-Answer.

Qualquer um dos lados pode encerrar a comunicação enviando um Disconnect-Peer-Request (DPR) ao qual o outro par deve responder com Disconnect-Peer-Answer. Depois disso, a conexão de transporte pode ser desconectada.

RFCs

O protocolo de diameter é atualmente definido nas seguintes RFCs IETF : RFCs obsoletos são indicados com texto tachado .

# Título Data de publicação Artigo relacionado Obsoleto por Notas
RFC 3588 Protocolo de base de diâmetro. Setembro 2003 RFC 6733
RFC 3589 Códigos de Comando Diameter para Projeto de Parceria de Terceira Geração (3GPP) Versão 5. Setembro 2003
RFC 4004 Aplicação Diameter Mobile IPv4. Agosto de 2005
RFC 4005 Aplicação de servidor de acesso à rede de diameter. Agosto de 2005 RFC 7155
RFC 4006 Diâmetro de aplicação de controle de crédito. Agosto de 2005 Aplicativo de controle de crédito de diameter RFC 8506
RFC 4072 Diâmetro Extensible Authentication Protocol (EAP) Aplicação. Agosto de 2005
RFC 4740 Aplicação de protocolo de iniciação de sessão de diameter (SIP). M. Novembro de 2006
RFC 5224 Aplicação de processamento de políticas de diameter. Março de 2008
RFC 5431 Diâmetro ITU-T Rw Policy Enforcement Interface Application. Março de 2009
RFC 5447 Diameter Mobile IPv6: Suporte para servidor de acesso à rede para interação do servidor diameter. Fevereiro de 2009
RFC 5516 Registro do código de comando de diameter para o sistema de pacotes evoluídos (EPS) do projeto de parceria de terceira geração (3GPP). Abril de 2009 -
RFC 5624 Parâmetros de qualidade de serviço para uso com diameter. Agosto de 2009
RFC 5719 Atualizadas as considerações da IANA para alocações de código de comando de diameter. Janeiro de 2010 RFC 6733
RFC 6733 Protocolo de base de diâmetro. Outubro de 2012
RFC 6737 O aplicativo de atualização de capacidades de diameter. Outubro de 2012
RFC 7155 Aplicação de servidor de acesso à rede de diameter. Abril de 2014


RFC 8506 Diâmetro de aplicação de controle de crédito. Março de 2019

Veja também

Referências

links externos