BroadNet
DIAMETERFondamenti

Protocollo di base DIAMETER: RFC 6733 spiegato

Aggiornato il 5 min di letturaBasato su standard
Risposta diretta

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.

§01

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.

§02

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.

Header del messaggio DIAMETER RFC 6733 (20 ottetti)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

Command 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.

Command code di base di DIAMETER (RFC 6733)
ComandoCodiceScopo
CER / CEA257Capabilities-Exchange — negozia le applicazioni supportate alla connessione
DWR / DWA280Device-Watchdog — liveness del peer / keepalive (RFC 3539)
DPR / DPA282Disconnect-Peer — chiusura ordinata della connessione
RAR / RAA258Re-Auth: il server chiede al client di riautorizzare una sessione
STR / STA275Session-Termination — il client termina una sessione autorizzata
ASR / ASA274Abort-Session — il server forza la chiusura della sessione
ACR / ACA271Accounting-Request/Answer (accounting di base)
§04

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.

§05

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.

§06

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.

FAQ

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.

Riferimenti

Specifiche della fonte

Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.

BNGestito dal team di ingegneri BroadNet·Servizi di messaggistica di livello carrier dal 2003
Mettilo sul filo

Realizzato con un vero binding SMPP e un'API REST.

Richiedi l'accesso di prova con chiavi di test reali: invia prima al tuo numero verificato, poi passa alla produzione in oltre 200 paesi una volta approvata l'identità del mittente e i percorsi.