3. Packet Format (Formato del pacchetto)
Esattamente un pacchetto RADIUS Accounting è incapsulato nel campo UDP Data [4], dove il campo UDP Destination Port (porta di destinazione UDP) indica 1813 (decimale).
Quando viene generata una risposta, le porte sorgente e destinazione sono invertite.
Questo memo documenta il protocollo RADIUS Accounting. Le prime distribuzioni di RADIUS Accounting utilizzavano il numero di porta UDP 1646, in conflitto con il servizio «sa-msg-port». Il numero di porta ufficialmente assegnato per RADIUS Accounting è 1813.
Un riepilogo del formato dati RADIUS è mostrato sotto. I campi sono trasmessi da sinistra a destra.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Code | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Authenticator |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attributes ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+
Code
Il campo Code è un octet (ottetto) e identifica il tipo di pacchetto RADIUS. Quando viene ricevuto un pacchetto con un campo Code non valido, viene scartato silenziosamente.
I codici RADIUS Accounting (decimali) sono assegnati come segue:
4 Accounting-Request
5 Accounting-Response
Identifier
Il campo Identifier è un octet e aiuta ad abbinare richieste e risposte. Il server RADIUS può rilevare una richiesta duplicata se ha lo stesso indirizzo IP sorgente del client e la stessa porta UDP sorgente e lo stesso Identifier in un breve intervallo di tempo.
Length
Il campo Length è due octet. Indica la lunghezza del pacchetto inclusi i campi Code, Identifier, Length, Authenticator e Attribute. Gli octet al di fuori dell'intervallo del campo Length DEVONO essere trattati come padding e ignorati in ricezione. Se il pacchetto è più corto di quanto indica il campo Length, DEVE essere scartato silenziosamente. La lunghezza minima è 20 e la massima è 4095.
Authenticator
Il campo Authenticator è sedici (16) octet. L'octet più significativo è trasmesso per primo. Questo valore è usato per autenticare i messaggi tra il client e il server RADIUS accounting.
Request Authenticator
Nei pacchetti Accounting-Request, il valore Authenticator è un checksum MD5 [5] di 16 octet, chiamato Request Authenticator.
Il NAS e il server RADIUS accounting condividono un secret. Il campo Request Authenticator nei pacchetti Accounting-Request contiene un hash MD5 unidirezionale calcolato su un flusso di octet costituito da Code + Identifier + Length + 16 octet zero + attributi della richiesta + shared secret (dove + indica concatenazione). Il valore hash MD5 di 16 octet è memorizzato nel campo Authenticator del pacchetto Accounting-Request.
Si noti che il Request Authenticator di un Accounting-Request non può essere calcolato allo stesso modo del Request Authenticator di un Access-Request RADIUS, perché non esiste l'attributo User-Password in un Accounting-Request.
Response Authenticator
Il campo Authenticator in un pacchetto Accounting-Response è chiamato Response Authenticator e contiene un hash MD5 unidirezionale calcolato su un flusso di octet costituito dal codice Accounting-Response, Identifier, Length, il campo Request Authenticator del pacchetto Accounting-Request a cui si risponde, e gli attributi di risposta se presenti, seguiti dallo shared secret. Il risultante valore hash MD5 di 16 octet è memorizzato nel campo Authenticator del pacchetto Accounting-Response.
Attributes
Gli attributi possono avere più istanze; in tal caso l'ordine degli attributi dello stesso tipo DOVREBBE essere preservato. L'ordine degli attributi di tipi diversi non è richiesto essere preservato.