3. Packet Format (Paketformat)
Genau ein RADIUS-Accounting-Paket wird im UDP-Datenfeld (UDP Data field) gekapselt [4], wobei das UDP-Zielfeld (UDP Destination Port field) den Wert 1813 (dezimal) angibt.
Wird eine Antwort erzeugt, werden Quell- und Zielport vertauscht.
Dieses Memo dokumentiert das RADIUS-Accounting-Protokoll. Die frühe Einsatzphase von RADIUS Accounting erfolgte mit der UDP-Portnummer 1646, was mit dem Dienst „sa-msg-port" kollidiert. Die offiziell zugewiesene Portnummer für RADIUS Accounting ist 1813.
Eine Zusammenfassung des RADIUS-Datenformats ist unten dargestellt. Die Felder werden von links nach rechts übertragen.
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
Das Code-Feld ist ein Oktett und identifiziert den Typ des RADIUS-Pakets. Wird ein Paket mit einem ungültigen Code-Feld empfangen, wird es still verworfen (silently discarded).
RADIUS-Accounting-Codes (dezimal) sind wie folgt zugewiesen:
4 Accounting-Request
5 Accounting-Response
Identifier
Das Identifier-Feld ist ein Oktett und hilft bei der Zuordnung von Anfragen und Antworten. Der RADIUS-Server kann eine doppelte Anfrage erkennen, wenn sie dieselbe Client-Quell-IP-Adresse und denselben Quell-UDP-Port und Identifier innerhalb eines kurzen Zeitraums hat.
Length
Das Length-Feld ist zwei Oktette lang. Es gibt die Länge des Pakets an, einschließlich der Felder Code, Identifier, Length, Authenticator und Attribute. Oktette außerhalb des durch das Length-Feld angegebenen Bereichs MÜSSEN als Padding behandelt und beim Empfang ignoriert werden. Ist das Paket kürzer, als das Length-Feld anzeigt, MUSS es still verworfen werden. Die Mindestlänge ist 20 und die Maximallänge 4095.
Authenticator
Das Authenticator-Feld ist sechzehn (16) Oktette lang. Das bedeutungsvollste Oktett wird zuerst übertragen. Dieser Wert dient zur Authentifizierung der Nachrichten zwischen dem Client und dem RADIUS-Accounting-Server.
Request Authenticator
In Accounting-Request-Paketen ist der Authenticator-Wert eine 16-Oktett-MD5-[5]-Prüfsumme, genannt Request Authenticator.
Der NAS und der RADIUS-Accounting-Server teilen ein Geheimnis (secret). Das Request-Authenticator-Feld in Accounting-Request-Paketen enthält einen einseitigen MD5-Hash (one-way MD5 hash), berechnet über eine Oktettsequenz, die aus Code + Identifier + Length + 16 Null-Oktetten + Request-Attribute + Shared Secret besteht (wobei + Verkettung bedeutet). Der 16-Oktett-MD5-Hashwert wird im Authenticator-Feld des Accounting-Request-Pakets gespeichert.
Beachten Sie, dass der Request Authenticator eines Accounting-Request nicht auf dieselbe Weise gebildet werden kann wie der Request Authenticator eines RADIUS Access-Request, weil es im Accounting-Request kein User-Password-Attribut gibt.
Response Authenticator
Das Authenticator-Feld in einem Accounting-Response-Paket heißt Response Authenticator und enthält einen einseitigen MD5-Hash, berechnet über eine Oktettsequenz, die aus dem Accounting-Response-Code, Identifier, Length, dem Request-Authenticator-Feld aus dem Accounting-Request-Paket, auf das geantwortet wird, und den Antwortattributen (falls vorhanden) besteht, gefolgt vom Shared Secret. Der resultierende 16-Oktett-MD5-Hashwert wird im Authenticator-Feld des Accounting-Response-Pakets gespeichert.
Attributes
Attribute können mehrfach vorkommen; in einem solchen Fall SOLL die Reihenfolge von Attributen desselben Typs beibehalten werden. Die Reihenfolge von Attributen unterschiedlicher Typen muss nicht beibehalten werden.