DIAMETER (IETF RFC 6733) è il protocollo AAA e di segnalazione per LTE, IMS e l'interlavoro 5G. Trasporta coppie comando richiesta/risposta — ciascuna un header da 20 byte più AVP — su SCTP o TCP con TLS. I peer negoziano le capacità con CER/CEA, monitorano la vitalità con DWR/DWA e chiudono in modo ordinato con DPR/DPA.
Che cos'è DIAMETER
DIAMETER è il protocollo di base per autenticazione, autorizzazione e accounting (AAA) definito dall'IETF nella RFC 6733, ed è il trasporto scelto da 3GPP per il piano di controllo di LTE e IMS. Ha sostituito RADIUS nelle grandi reti degli operatori ed è, sul lato a pacchetto, il corrispettivo di SS7/MAP sul lato legacy — trasportando la gestione della sottoscrizione e della mobilità (S6a verso l'HSS), policy e charging (Gx, Gy) e la registrazione IMS (Cx/Dx). Tutto avviene come coppie di comandi richiesta/risposta tra peer identificati da una Diameter Identity (un FQDN) e raggruppati in realm.
L'header del messaggio
Ogni messaggio DIAMETER inizia con un header fisso di 20 ottetti seguito da un elenco variabile di AVP. L'header contiene una Version (sempre 1), una Message Length a 24 bit, un ottetto di Command Flags, un Command Code a 24 bit, un Application-Id a 32 bit che nomina l'applicazione a cui appartiene il messaggio e due identificatori. L'Hop-by-Hop Identifier associa una richiesta alla sua risposta tra due peer adiacenti e viene riscritto da ogni proxy; l'End-to-End Identifier è impostato dall'originatore, preservato inalterato lungo tutto il percorso e usato per rilevare i duplicati.
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 code
Un Command Code più l'Application-Id nominano l'operazione; la risposta riutilizza lo stesso command code con il bit Request azzerato. Quattro command flags trasportano la semantica del messaggio. R (Request) distingue una richiesta da una risposta. P (Proxiable) indica che il messaggio può essere inoltrato via proxy, relay o redirect anziché gestito localmente. E (Error) contrassegna una risposta di errore di protocollo. T (potenzialmente ritrasmesso) contrassegna una richiesta re-inviata dopo un failover di collegamento, così il ricevente può difendersi dai duplicati. Il protocollo di base definisce i comandi di servizio; applicazioni come S6a, Gx e Cx definiscono i propri command code al di sopra.
| Comando | Codice | Scopo |
|---|---|---|
| CER / CEA | 257 | Capabilities-Exchange — negozia le applicazioni supportate alla connessione |
| DWR / DWA | 280 | Device-Watchdog — liveness del peer / keepalive (RFC 3539) |
| DPR / DPA | 282 | Disconnect-Peer — chiusura ordinata della connessione |
| RAR / RAA | 258 | Re-Auth: il server chiede al client di riautorizzare una sessione |
| STR / STA | 275 | Session-Termination — il client termina una sessione autorizzata |
| ASR / ASA | 274 | Abort-Session — il server forza la chiusura della sessione |
| ACR / ACA | 271 | Accounting-Request/Answer (accounting di base) |
Scambio di capacità: CER / CEA
Immediatamente dopo l'apertura di una connessione di trasporto, i due peer si scambiano un Capabilities-Exchange-Request e Answer (comando 257, Application-Id 0). Ciascun lato annuncia il proprio Origin-Host e Origin-Realm, il proprio Host-IP-Address, un Vendor-Id e — punto cruciale — l'insieme delle applicazioni che supporta tramite gli AVP Auth-Application-Id, Acct-Application-Id e Vendor-Specific-Application-Id. Se i peer non condividono alcuna applicazione comune la connessione viene rifiutata. CER/CEA è il modo con cui un nodo apprende se il peer sa parlare S6a, Gx o Cx prima che scorra qualsiasi traffico applicativo, e avviene esattamente una volta per connessione.
Keepalive e chiusura: DWR / DPR
DIAMETER usa il watchdog della RFC 3539 per rilevare un peer morto più rapidamente di quanto farebbe il trasporto da solo. Quando una connessione è inattiva, un peer invia un Device-Watchdog-Request (comando 280) e attende un Device-Watchdog-Answer entro l'intervallo di watchdog; mancanze ripetute portano il peer in uno stato di guasto e il traffico viene reinstradato verso un'alternativa. Per chiudere deliberatamente una connessione — per manutenzione o riconfigurazione — un peer invia un Disconnect-Peer-Request (comando 282) che trasporta un Disconnect-Cause (REBOOTING, BUSY o DO_NOT_WANT_TO_TALK_TO_YOU), lasciando all'altro lato la decisione se riconnettersi.
Trasporto: SCTP e TCP con TLS
La RFC 6733 impone il supporto sia di SCTP (RFC 4960) sia di TCP, con SCTP preferito per la segnalazione perché il suo multi-streaming evita il blocco head-of-line e il suo multi-homing offre ridondanza di percorso. La porta nota è la 3868. La sicurezza è fornita da TLS su TCP o DTLS su SCTP; all'interno di un dominio operatore fidato molti dispiegamenti usano invece IPsec a livello di rete. DIAMETER non dispone di un'autenticazione dei messaggi in-band propria, ed è per questo che contano la sicurezza del trasporto e il filtraggio ai bordi discussi in Sicurezza del roaming DIAMETER.
Domande frequenti
Che cos'è il protocollo di base DIAMETER?
È il protocollo AAA e di segnalazione definito nella IETF RFC 6733, usato come trasporto del piano di controllo per LTE, IMS e l'interlavoro 5G. Trasporta coppie comando richiesta/risposta — un header da 20 byte più AVP — su SCTP o TCP con TLS, e definisce lo scambio di capacità, il keepalive di watchdog e la disconnessione ordinata.
Cosa significano i flag R, P, E e T?
R contrassegna una Request (azzerato nella risposta). P contrassegna il messaggio come Proxiable — può essere instradato via relay, proxy o redirect. E contrassegna una risposta di Error. T contrassegna una richiesta come potenzialmente ritrasmessa dopo un failover, così il ricevente può rilevare un duplicato usando l'End-to-End Identifier.
Qual è la differenza tra Hop-by-Hop ed End-to-End Identifier?
L'Hop-by-Hop Identifier associa una richiesta alla sua risposta tra due peer adiacenti e viene riscritto da ogni proxy. L'End-to-End Identifier è impostato una sola volta dall'originatore, preservato inalterato lungo l'intero percorso e usato per rilevare i messaggi duplicati dopo una ritrasmissione.
A cosa serve lo scambio CER/CEA?
Il Capabilities-Exchange-Request/Answer (comando 257) avviene una volta all'apertura di una connessione. I peer annunciano la propria identità e le applicazioni DIAMETER che supportano (Auth-Application-Id, Vendor-Specific-Application-Id). Se non viene condivisa alcuna applicazione la connessione viene rifiutata, così entrambi i lati sanno in anticipo se possono parlare S6a, Gx o Cx.
Quale porta e trasporto usa DIAMETER?
DIAMETER usa la porta nota 3868 su SCTP o TCP, con SCTP preferito per la segnalazione grazie a multi-streaming e multi-homing. La sicurezza è TLS su TCP o DTLS su SCTP; all'interno di un dominio operatore fidato è invece comune IPsec a livello di rete.
Come rileva un peer DIAMETER che il proprio partner è caduto?
Usa il device watchdog della RFC 3539: su una connessione inattiva un peer invia un Device-Watchdog-Request (comando 280) e attende un Device-Watchdog-Answer entro l'intervallo di watchdog. Risposte ripetutamente mancate portano il peer in uno stato di guasto e il traffico viene reinstradato verso un peer alternativo.
Specifiche della fonte
Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.