Diameter es un protocolo de red, diseñado para suministrar un marco de trabajo que ofrezca servicios AAA (en inglés: "Authentication, Authorization, Accounting") para aplicaciones que involucran acceso a redes o aplicaciones IP Móvil. Diameter es un protocolo cuyo desarrollo se ha basado en el protocolo RADIUS, esta estandarizado de acuerdo con el RFC 6733 “Diameter Base Protocol”(Obsoleto: RFC 3588). En dicho RFC, se establecen las bases de Diameter y sólo se especifica el soporte para el protocolo AAA, aunque el concepto básico de Diameter es permitir que pueda ser extendido para proporcionar servicios de Authentication y Authorization. Tratando dichos servicios como aplicaciones para Diameter descritas en documentos separados. El concepto de aplicaciones para Diameter está definido en el RFC 6733 (Obsoleto: RFC 3588) como servicios, protocolos y procedimientos que usan las facilidades suministradas por los servidores y Proxis Diameter y por el protocolo en sí. Todas estas aplicaciones deben soportar las funcionalidades definidas en el documento base RFC 6733(Obsoleto: RFC 3588). Diameter está diseñado para trabajar tanto de una manera local como en un estado de alerta, sondeo y captura, que en inglés se le denomina roaming de AAA, que permite ofrecer servicios sumamente móviles, dinámicos, flexibles y versátiles. Es un protocolo peer-to-peer en el sentido que cada nodo puede iniciar una solicitud o request. Debido a esta característica peer-to-peer todos los nodos que implementan Diameter pueden ser clientes, servidores o agentes Diameter.

Historia de Diameter

Al terminar el protocolo RADIUS en el primer semestre de 2000, surgió un nuevo grupo de trabajo del IETF denominado AAA y decidió dar inicio al desarrollo de un nuevo protocolo que fuese el sucesor de RADIUS. Se evaluaron varios protocolos y finalmente se optó por evolucionar el protocolo DIAMETER, así que dedicaron su esfuerzo en mejorarlo y estandarizarlo ante el IETF. Inicialmente diseñado como una mejora del protocolo RADIUS la meta era maximizar la compatibilidad y facilitar la migración desde RADIUS. El origen de su nombre, no es un acrónimo, sino un juego de palabras y de lógica ingeniosa que representa al diámetro como el doble del radio, aunque sin embargo este protocolo es mucho más que eso y numerosos autores citan DIAMETER como el futuro de los protocolos AAA.

Mejora respecto de RADIUS

Las principales diferencias de DIAMETER si lo comparamos con su antecesor RADIUS son:

Usa protocolos de transportes fiables (TCP o SCTP, no UDP). Usa seguridad a nivel de transporte (IPSEC o TLS). Tiene compatibilidad transicional con RADIUS. Tiene un espacio de direcciones mayor para AVPs (Attribute Value Pairs, pares atributo-valor) e identificadores (32 bits en lugar de 8). Es un protocolo peer-to-peer en lugar de cliente-servidor: admite mensajes iniciados por el servidor. Pueden usarse modelos con y sin estado. Tiene descubrimiento dinámico de peers (usando DNS, SRV y NAPTR). Tiene negociación de capacidades. Admite ACKs en el nivel de aplicación, definiendo métodos de fallo y máquinas de estado (RFC 3539). Tiene notificación de errores. Tiene mejor compatibilidad con roaming. Es más fácil de extender, pudiendo definirse nuevos comandos y atributos. Incluye una implementación básica de sesiones y control de usuarios.

Servicios AAA Autenticación La autenticación es el proceso gracias al cual podemos verificar la identidad de quien envía información y también de quien la recibe. Para lograr la autenticación y averiguar que alguien es quien dice ser, se utilizan las identidades que los usuarios presentan a la red a través de credenciales. Existen autenticación de usuario, autenticación de equipo, autenticación de Mensaje, autenticación unilateral, autenticación mutua, autenticación server… Autorización La autorización es el proceso posterior a la autenticación. Es el proceso mediante el cual se le asigna ciertos privilegios al poseedor de un credencial particular. Los privilegios se asocian al perfil del usuario del terminal. Los privilegios pueden ser permitir el acceso a una serie de recursos, como bases de datos, archivos, acceso a periféricos, tiempo de uso de un procesador, ejecución de ciertas instrucciones etc.

Contabilidad Es el proceso de recolección de información sobre el uso de recursos con el fin de realizar otras funciones como planificación de capacidad, auditorías, facturación y asignación de costos. La auditoría consiste en el chequeo periódico para determinar la firmeza de la información y de las políticas de gestión, en especial sobre la seguridad. La asignación de costos trata sobre la estructura de costos para cada uno de los servicios de los usuarios. El registro contable representa un resumen sobre el consumo de recursos de un usuario y es generado por el Accounting Server. La seguridad CMS (Content Management System), puede aplicarse a los mensajes de accounting para otorgarle a los datos una fuerte autenticación e integridad de información. El protocolo define algunos AVP que deben estar presentes en los mensajes de petición para accounting en la sesión de un usuario. Adicionalmente, para las aplicaciones que requieren de múltiples sesiones de accounting, ha sido definido un AVP Accounting-Sub-Session-Id.

Aplicación

Una aplicación Diameter no es una aplicación de software, si no un protocolo basado en el protocolo base de DIAMETER definido en RFC 6733 (Obsoleto: RFC 3588).Cada aplicación está definido por un identificador de la aplicación y puede añadir nuevos códigos de comando y / o nuevos AVPs obligatorios (Atributo-Valor par). La adición de un nuevo AVP opcional no requiere una nueva aplicación. Como las aplicaciones son desarrolladas como extensiones, se van diseñando a medida que se necesiten. Ejemplos de las aplicaciones Diámetro: Aplicaciones móviles IPv4 (MobileIP, RFC 4004). Aplicación de servidor de acceso a red (NASREQ, RFC 4005). Aplicación de protocolo extensible de autenticación (EAP) (RFC 4072). Aplicación de control de crédito (DCCA, RFC 4006). Aplicación de protocolo de inicio de sesión (SIP) (RFC 4740). Diversas aplicaciones en el 3GPP Subsistema Multimedia IP. Tanto el HSS y la SLF se comunican usando el protocolo Diameter. Para cada aplicación que use los servicios de DIAMETER se genera el protocolo adaptado a la misma.

Seguridad en Diameter DIAMETER se apoya en IPsec o TLS para ofrecer seguridad. Estos protocolos son aceptables en ambientes donde todos los nodos son confiables.

Todas las implementaciones de DIAMETER deben soportar IPsec ESP en modo Transporte e IKE para autenticación, negociación de Asociaciones de Seguridad, gestión de claves. Es obligatorio para todos los servidores y agentes Diameter que soporten IPsec y TLS, sin embargo los clientes solo están obligados a soportar IPsec, mientras que TLS es opcional.

Formato del mensaje Un mensaje del protocolo DIAMETER está formado por una cabecera o header que tiene un tamaño de 20 octetos y por una cantidad variable de AVPs.

Cabeceras Diameter +Cabecera Diameter Bit  0 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031 0 version Longitud mensaje 32 R P E T         Código de comando 64 Aplicación ID 96 Hop-by-Hop ID 128 End-to-End ID 160... AVPs...

Versión: El campo versión indica la versión del Protocolo Diameter, desde 2014 solo admite el valor 1. Longitud del Mensaje: El tamaño de este campo es de 3 octetos. Indica la longitud del mensaje incluyendo el header y los AVPs acopladas. Comando de flags: Campo de 1 octeto. Los flags que aparecen en este comando son: R (Request): Si su valor es 1 indica que se trata de un mensaje de solicitud (Request), si por el contrario su valor es 0, se trata de un mensaje de respuesta (Answer). P (Proxiable): Si está activo, el mensaje puede ser proxy, retransmitido o redirigido. Si está desactivado, el mensaje debe ser procesado localmente. E (Error): Utilizamos este flag para indicar que el mensaje contiene un error de protocolo. Catalogamos este tipo de mensaje como mensajes de error. Este bit no debe ser fijado en los mensajes Request. T (Retransmisión): Este flag se utiliza después de un error en el proceso de conmutación de enlace, para ayudar a eliminar solicitudes duplicadas. Se establece cuando volver a enviar peticiones. Código de Comandos: Campo de tamaño 3 octetos. Indica la acción que una aplicación Diameter debe tomar al recibir el mensaje. Este espacio de direcciones es manejado por el IANA.Todas las abreviaciones terminan en R (Request) o en A (Answer). Además todos los mensajes Request tienen el flag R puesto a “1”.Los comandos 0-255 están reservados para compatibilidad con RADIUS. Los valores 256-16777213 son para los comandos permanentes. Los valores 16777214 y 16777215 (hex 0xfffffe y 0xFFFFFF) se reservan para fines de experimentación y ensayo.

Nombre ComandoAbbr.CódigoAplicación AA-RequestAAR265Diameter base AA-AnswerAAA265Diameter base Diameter-EAP-RequestDER268Diameter base Diameter-EAP-AnswerDEA268Diameter base Abort-Session-RequestASR274Diameter base Abort-Session-AnswerASA274Diameter base Accounting-RequestACR271Diameter base Accounting-AnswerACA271Diameter base Credit-Control-RequestCCR272Diameter base Credit-Control-AnswerCCA272Diameter base Capabilities-Exchange-RequestCER257Diameter base Capabilities-Exchange-AnswerCEA257Diameter base Device-Watchdog-RequestDWR280Diameter base Device-Watchdog-AnswerDWA280Diameter base Disconnect-Peer-RequestDPR282Diameter base Disconnect-Peer-AnswerDPA282Diameter base Re-Auth-RequestRAR258Diameter base Re-Auth-AnswerRAA258Diameter base Session-Termination-RequestSTR275Diameter base Session-Termination-AnswerSTA275Diameter base User-Authorization-RequestUAR300Diameter base User-Authorization-AnswerUAA300Diameter base Server-Assignment-RequestSAR301Diameter base Server-Assignment-AnswerSAA301Diameter base Location-Info-RequestLIR302Diameter base Location-Info-AnswerLIA302Diameter base Multimedia-Auth-RequestMAR303Diameter base Multimedia-Auth-AnswerMAA303Diameter base Registration-Termination-RequestRTR304Diameter base Registration-Termination-AnswerRTA304Diameter base Push-Profile-RequestPPR305Diameter base Push-Profile-AnswerPPA305Diameter base User-Data-RequestUDR306Diameter base User-Data-AnswerUDA306Diameter base Profile-Update-RequestPUR307Diameter base Profile-Update-AnswerPUA307Diameter base Subscribe-Notifications-RequestSNR308Diameter base Subscribe-Notifications-AnswerSNA308Diameter base Push-Notification-RequestPNR309Diameter base Push-Notification-AnswerPNA309Diameter base Bootstrapping-Info-RequestBIR310Diameter base Bootstrapping-Info-AnswerBIA310Diameter base Message-Process-RequestMPR311Diameter base Message-Process-AnswerMPA311Diameter base Update-Location-RequestULR316Diameter base Update-Location-AnswerULA316Diameter base Authentication-Information-RequestAIR318Diameter base Authentication-Information-AnswerAIA318Diameter base Notify-RequestNR323Diameter base Notify-AnswerNA323Diameter base Provide-Location-RequestPLR83886203GPP-LCS-SLg (Application-ID 16777255) Provide-Location-AnswerPLA83886203GPP-LCS-SLg (Application-ID 16777255) Routing-Info-RequestRIR83886223GPP-LCS-SLh (Application-ID 16777291) Routing-Info-AnswerRIA83886223GPP-LCS-SLh (Application-ID 16777291)

ID de Aplicación: Campo de tamaño 4 octetos. IANA define un identificador para cada aplicación Diameter. El protocolo base no necesita identificador ya que es soportado por todos los nodos. También con este campo se identifica la aplicación a la cual va dirigido el mensaje.

Application-IDAbbr.Full nameUsage 0BaseDiameter Common MessagesDiameter protocol association establishment/teardown/maintenance 16777217Sh3GPP ShVoIP/IMS SIP Application Server to HSS interface 16777251S6a/S6d3GPP S6a/S6dLTE Roaming signaling 16777255SLg3GPP LCS SLgLocation services