BroadNet
DIAMETERFondamentaux

Protocole de base Diameter : RFC 6733 expliqué

Mis à jour le 5 min de lectureFondé sur des normes
Réponse directe

Diameter (IETF RFC 6733) est le protocole AAA et de signalisation pour l'interfonctionnement LTE, IMS et 5G. Il transporte des paires de commandes requête/réponse — chacune un en-tête de 20 octets plus des AVP — sur SCTP ou TCP avec TLS. Les pairs négocient leurs capacités via CER/CEA, surveillent la disponibilité via DWR/DWA et se déconnectent proprement via DPR/DPA.

§01

Ce qu'est Diameter

Diameter est le protocole de base d'authentification, d'autorisation et de comptabilité (AAA) défini par l'IETF dans la RFC 6733, et le transport que le 3GPP a retenu pour le plan de contrôle LTE et IMS. Il a remplacé RADIUS dans les grands réseaux d'opérateurs et constitue, côté paquet, l'équivalent de SS7/MAP côté hérité — en transportant la gestion des abonnements et de la mobilité (S6a vers le HSS), la politique et la taxation (Gx, Gy) et l'enregistrement IMS (Cx/Dx). Tout fonctionne sous forme de paires de commandes requête/réponse entre des pairs nommés, identifiés par une Diameter Identity (un FQDN) et regroupés en realms.

§02

L'en-tête du message

Chaque message Diameter débute par un en-tête fixe de 20 octets suivi d'une liste variable d'AVP. L'en-tête contient une Version (toujours 1), une Message Length de 24 bits, un octet Command Flags, un Command Code de 24 bits, un Application-Id de 32 bits qui désigne l'application à laquelle appartient le message, ainsi que deux identifiants. Le Hop-by-Hop Identifier associe une requête à sa réponse entre deux pairs adjacents et est réécrit par chaque proxy ; le End-to-End Identifier est fixé par l'émetteur, préservé inchangé sur tout le chemin et utilisé pour détecter les doublons.

En-tête de message Diameter RFC 6733 (20 octets)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

Indicateurs de commande et codes de commande

Un Command Code associé à l'Application-Id désigne l'opération ; la réponse réutilise le même code de commande avec le bit Request effacé. Quatre indicateurs de commande portent la sémantique du message. R (Request) distingue une requête d'une réponse. P (Proxiable) indique que le message peut être relayé par un proxy, retransmis ou redirigé plutôt que traité localement. E (Error) signale une réponse d'erreur protocolaire. T (potentiellement retransmis) marque une requête réémise après une bascule de lien, afin que le récepteur puisse se prémunir contre les doublons. Le protocole de base définit les commandes de service ; des applications comme S6a, Gx et Cx définissent leurs propres codes de commande par-dessus.

Codes de commande de base Diameter (RFC 6733)
CommandeCodeObjectif
CER / CEA257Capabilities-Exchange — négocier les applications prises en charge lors de la connexion
DWR / DWA280Device-Watchdog — vérification de vie du pair / keepalive (RFC 3539)
DPR / DPA282Disconnect-Peer — fermeture ordonnée de la connexion
RAR / RAA258Re-Auth — le serveur demande au client de réautoriser une session
STR / STA275Session-Termination — le client met fin à une session autorisée
ASR / ASA274Abort-Session — le serveur force la fin d'une session
ACR / ACA271Accounting-Request/Answer (comptabilité de base)
§04

Échange de capacités : CER / CEA

Immédiatement après l'ouverture d'une connexion de transport, les deux pairs échangent une Capabilities-Exchange-Request et sa réponse (commande 257, Application-Id 0). Chaque partie annonce son Origin-Host et son Origin-Realm, son Host-IP-Address, un Vendor-Id et — point essentiel — l'ensemble des applications qu'elle prend en charge via les AVP Auth-Application-Id, Acct-Application-Id et Vendor-Specific-Application-Id. Si les pairs ne partagent aucune application commune, la connexion est refusée. Le CER/CEA permet à un nœud de savoir si le pair sait parler S6a, Gx ou Cx avant que le moindre trafic applicatif ne circule, et il n'a lieu qu'une seule fois par connexion.

§05

Maintien en vie et fermeture : DWR / DPR

Diameter recourt au watchdog de la RFC 3539 pour détecter un pair mort plus vite que le transport ne le ferait de lui-même. Lorsqu'une connexion est inactive, un pair envoie une Device-Watchdog-Request (commande 280) et attend une Device-Watchdog-Answer dans l'intervalle de watchdog ; des absences répétées font passer le pair à l'état défaillant et le trafic est rerouté vers une alternative. Pour fermer une connexion de manière délibérée — pour maintenance ou reconfiguration — un pair envoie une Disconnect-Peer-Request (commande 282) portant une Disconnect-Cause (REBOOTING, BUSY ou DO_NOT_WANT_TO_TALK_TO_YOU), laissant l'autre partie décider de se reconnecter ou non.

§06

Transport : SCTP et TCP avec TLS

La RFC 6733 impose la prise en charge à la fois de SCTP (RFC 4960) et de TCP, SCTP étant préféré pour la signalisation car son multi-streaming évite le blocage en tête de file et son multi-homing offre une redondance de chemin. Le port bien connu est le 3868. La sécurité est assurée par TLS sur TCP ou DTLS sur SCTP ; au sein d'un domaine d'opérateur de confiance, beaucoup de déploiements utilisent plutôt IPsec au niveau réseau. Diameter ne dispose d'aucune authentification de message intégrée, ce qui explique pourquoi la sécurité du transport et le filtrage en bordure abordés dans la sécurité du roaming Diameter sont importants.

FAQ

Questions fréquemment posées

Qu'est-ce que le protocole de base Diameter ?

C'est le protocole AAA et de signalisation défini dans la RFC 6733 de l'IETF, utilisé comme transport du plan de contrôle pour l'interfonctionnement LTE, IMS et 5G. Il transporte des paires de commandes requête/réponse — un en-tête de 20 octets plus des AVP — sur SCTP ou TCP avec TLS, et définit l'échange de capacités, le maintien en vie par watchdog et la déconnexion ordonnée.

Que signifient les indicateurs R, P, E et T ?

R marque une requête (effacé dans la réponse). P marque le message comme Proxiable — il peut être retransmis, relayé par un proxy ou redirigé. E marque une réponse d'erreur. T marque une requête comme potentiellement retransmise après une bascule, afin que le récepteur puisse détecter un doublon à l'aide du End-to-End Identifier.

Quelle est la différence entre le Hop-by-Hop Identifier et le End-to-End Identifier ?

Le Hop-by-Hop Identifier associe une requête à sa réponse entre deux pairs adjacents et est réécrit par chaque proxy. Le End-to-End Identifier est fixé une seule fois par l'émetteur, préservé inchangé sur tout le chemin et utilisé pour détecter les messages en double après une retransmission.

À quoi sert l'échange CER/CEA ?

La Capabilities-Exchange-Request/Answer (commande 257) s'exécute une fois à l'ouverture d'une connexion. Les pairs annoncent leur identité et les applications Diameter qu'ils prennent en charge (Auth-Application-Id, Vendor-Specific-Application-Id). Si aucune application n'est partagée, la connexion est refusée ; les deux parties savent donc d'emblée si elles peuvent parler S6a, Gx ou Cx.

Quel port et quel transport Diameter utilise-t-il ?

Diameter utilise le port bien connu 3868 sur SCTP ou TCP, SCTP étant préféré pour la signalisation en raison du multi-streaming et du multi-homing. La sécurité repose sur TLS sur TCP ou DTLS sur SCTP ; au sein d'un domaine d'opérateur de confiance, IPsec au niveau réseau est plutôt courant.

Comment un pair Diameter détecte-t-il la défaillance de son partenaire ?

Il utilise le device watchdog de la RFC 3539 : sur une connexion inactive, un pair envoie une Device-Watchdog-Request (commande 280) et attend une Device-Watchdog-Answer dans l'intervalle de watchdog. Des réponses manquées à répétition font passer le pair à l'état défaillant et le trafic est rerouté vers un pair alternatif.

Références

Spécifications sources

Les normes publiées sur lesquelles repose cette page. S'ouvre dans un nouvel onglet.

BNMaintenu par l'équipe d'ingénierie BroadNet·Messagerie de qualité opérateur depuis 2003
Placez-le sur le fil

Conçu avec une véritable liaison SMPP et une API REST.

Demandez un accès de test avec de véritables clés de test : envoyez d’abord à votre propre numéro vérifié, puis passez en production dans plus de 200 pays une fois que votre identité d’expéditeur et vos routes seront approuvées.