Aller au contenu principal

3. Format des paquets

Exactement un paquet RADIUS Accounting est encapsulé dans le champ Data UDP [4], le champ UDP Destination Port indiquant 1813 (décimal).

Lorsqu'une réponse est générée, les ports source et destination sont inversés.

Ce mémo documente le protocole RADIUS Accounting. Les premiers déploiements de RADIUS Accounting utilisaient le port UDP 1646, ce qui entre en conflit avec le service « sa-msg-port ». Le numéro de port officiellement assigné à RADIUS Accounting est 1813.

Un résumé du format des données RADIUS est présenté ci-dessous. Les champs sont transmis de gauche à droite.

 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

Le champ Code fait un octet et identifie le type de paquet RADIUS. Lorsqu'un paquet est reçu avec un champ Code invalide, il est rejeté silencieusement.

Les codes RADIUS Accounting (décimal) sont assignés comme suit :

     4       Accounting-Request
5 Accounting-Response

Identifier

Le champ Identifier fait un octet et aide à mettre en correspondance les demandes et les réponses. Le serveur RADIUS peut détecter une demande dupliquée si elle a la même adresse IP source client, le même port UDP source et le même Identifier dans un court intervalle de temps.

Length

Le champ Length fait deux octets. Il indique la longueur du paquet, y compris les champs Code, Identifier, Length, Authenticator et Attribute. Les octets en dehors de la plage indiquée par le champ Length DOIVENT être traités comme du rembourrage (padding) et ignorés à la réception. Si le paquet est plus court que ne l'indique le champ Length, il DOIT être rejeté silencieusement. La longueur minimale est 20 et la longueur maximale est 4095.

Authenticator

Le champ Authenticator fait seize (16) octets. L'octet le plus significatif est transmis en premier. Cette valeur sert à authentifier les messages entre le client et le serveur de comptabilité RADIUS.

Request Authenticator

Dans les paquets Accounting-Request, la valeur du Authenticator est une somme de contrôle MD5 [5] sur 16 octets, appelée Request Authenticator.

Le NAS et le serveur de comptabilité RADIUS partagent un secret. Le champ Request Authenticator dans les paquets Accounting-Request contient un hachage MD5 unidirectionnel calculé sur un flux d'octets constitué de : Code + Identifier + Length + 16 octets à zéro + attributs de la demande + secret partagé (où + indique la concaténation). La valeur de hachage MD5 sur 16 octets est stockée dans le champ Authenticator du paquet Accounting-Request.

Notez que le Request Authenticator d'un Accounting-Request ne peut pas être calculé de la même manière que le Request Authenticator d'un RADIUS Access-Request, car il n'y a pas d'attribut User-Password dans un Accounting-Request.

Response Authenticator

Le champ Authenticator dans un paquet Accounting-Response est appelé Response Authenticator ; il contient un hachage MD5 unidirectionnel calculé sur un flux d'octets constitué du Code Accounting-Response, Identifier, Length, du champ Request Authenticator du paquet Accounting-Request auquel on répond, et des attributs de réponse le cas échéant, suivis du secret partagé. La valeur de hachage MD5 sur 16 octets résultante est stockée dans le champ Authenticator du paquet Accounting-Response.

Attributes

Les attributs peuvent apparaître en plusieurs exemplaires ; dans ce cas, l'ordre des attributs du même type DEVRAIT être préservé. L'ordre des attributs de types différents n'a pas besoin d'être préservé.