BroadNet
DIAMETERNachrichtenformat

DIAMETER-AVPs, Datentypen und Result-Code

Aktualisiert am 4 Min. LesezeitStandardsbasiert
Direkte Antwort

AVPs (Attribute-Value Pairs) tragen alle DIAMETER-Daten. Jedes hat einen AVP Code, ein Flags-Oktett (V Vendor, M Mandatory, P reserviert), eine Länge, eine optionale Vendor-Id und einen typisierten Wert. Werte nutzen Basistypen wie Unsigned32, OctetString, Address, Time, Enumerated und Grouped. Die AVPs Result-Code und Experimental-Result melden Ergebnisse.

§01

AVP-Struktur

Jedes Datenelement in DIAMETER — Identitäten, Subskriptionsfelder, Kontingente, Ergebnisse — wird als AVP codiert. Ein AVP beginnt mit einem 32-Bit-AVP-Code, dann einem Flags-Oktett, einer 24-Bit-Länge, die das gesamte AVP umfasst, einer optionalen 32-Bit-Vendor-Id und dem auf eine 4-Oktett-Grenze aufgefüllten Wert. Der AVP Code allein ist innerhalb des von der IETF verwalteten Raums eindeutig; ist das V-Flag (Vendor-Specific) gesetzt, wird der Code stattdessen im Nummernraum der folgenden Vendor-Id interpretiert — so definiert 3GPP (Vendor-Id 10415) die Hunderte von AVPs für S6a, Gx und Cx, ohne mit dem Basisprotokoll zu kollidieren.

RFC 6733 AVP-Formattext
0                   1                   2                   3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         AVP Code (32)                      |
| V M P r r r r r|                AVP Length (24)            |
|              Vendor-Id (32)  — present only if V=1          |
|    Data ...  (padded to a 4-octet boundary)                |
§02

Die V-, M- und P-Flags

Drei AVP-Flags bestimmen, wie ein Empfänger das AVP behandeln muss. V (Vendor-Specific) signalisiert, dass eine Vendor-Id folgt und der AVP Code im Raum dieses Herstellers liegt. M (Mandatory) ist das wichtige: Ist M gesetzt und versteht der Empfänger das AVP nicht, muss er die gesamte Nachricht mit DIAMETER_AVP_UNSUPPORTED (5001) ablehnen — ein falsch gesetztes M bricht daher das Zusammenwirken, und Vendor-AVPs, die eine Implementierung gefahrlos ignorieren darf, werden mit gelöschtem M gesendet. P war ursprünglich ein End-to-End-Sicherheitsmarker; RFC 6733 hat diese Verwendung als veraltet erklärt, und das Bit ist nun reserviert und auf null gesetzt.

AVP-Flag-Bits
FlagNameBedeutung, wenn gesetzt
VVendor-SpecificEin Vendor-Id-Feld ist vorhanden; der Code liegt im Bereich dieses Vendors
MObligatorischDer Empfänger muss es verstehen oder die Nachricht ablehnen (5001)
P(reserviert)Früher End-to-End-Sicherheit; gemäß RFC 6733 veraltet, auf 0 gesetzt
§03

Basisdatentypen

AVP-Werte sind streng typisiert. RFC 6733 definiert eine Menge von Basistypen und mehrere aus OctetString abgeleitete Typen. Integer- und Unsigned-Typen tragen Zähler, Identifikatoren und Enumerationen; OctetString trägt opake oder strukturierte Binärdaten; und abgeleitete Typen fügen Semantik hinzu, die eine Implementierung validieren kann. Address codiert eine IP-Adresse mit einer führenden Zwei-Oktett-Adressfamilie. Time ist ein 32-Bit-Sekundenwert im NTP-Stil. Enumerated ist ein Integer32, dessen Werte von der Anwendung benannt werden. DiameterIdentity und DiameterURI tragen Peer-FQDNs und URIs.

Gängige DIAMETER-AVP-Datentypen
TypKodierungTypische Anwendung
Unsigned32 / Integer3232-Bit-IntegerZähler, Kontingente, Auth-Application-Id, Result-Code
Unsigned64 / Integer6464-Bit-IntegerOktettvolumina, große Zähler
OctetStringOpake OktetteBinäre Nutzdaten (Authentifizierungsvektoren, TPDUs)
UTF8StringOctetStringMenschenlesbarer Text (User-Name, Produktname)
EnumeratedInteger32Benannte Wertesätze (z. B. RAT-Type, CC-Request-Type)
AddressOctetString + FamilieIPv4/IPv6-Adressen (Host-IP-Address, Framed-IP)
ZeitUnsigned32Sekunden seit 1900 (Event-Timestamp)
DiameterIdentityOctetStringPeer-FQDN (Origin-Host, Destination-Host)
GroupedVerschachtelte AVPsAVPs, die andere AVPs enthalten
§04

Grouped-AVPs

Ein Grouped-AVP hat als Wert eine verkettete Liste weiterer AVPs — so verschachteln sich strukturierte Datensätze sauber ohne neue Wire-Regeln. Subscription-Data in S6a, Charging-Rule-Install in Gx und Experimental-Result tragen alle Sub-AVPs innerhalb einer Gruppe. Gruppierung ist rekursiv: Ein Grouped-AVP kann weitere Grouped-AVPs enthalten, wodurch sich ein vollständiges LTE-Subskriptionsprofil oder eine Menge von PCC-Regeln als ein einziges Top-Level-AVP ausdrücken lässt. Jedes enthaltene AVP behält seinen eigenen Code, seine Flags und seine Länge, sodass ein Empfänger die Gruppe mit derselben Maschinerie parst, die er auf oberster Ebene verwendet.

§05

Result-Code und Experimental-Result

DIAMETER meldet das Ergebnis eines Request in der Answer. Das Basis-AVP Result-Code (Code 268) ist ein Unsigned32, das anhand der führenden Ziffer in Bereiche gruppiert ist: 1xxx informativ, 2xxx Erfolg, 3xxx Protokollfehler (von einem Proxy/Relay), 4xxx transiente Fehler, die der Client wiederholen darf, und 5xxx dauerhafte Fehler. Benötigt eine Anwendung einen herstellerspezifischen Fehler, den der Basis-Result-Code nicht ausdrücken kann, nutzt sie das AVP Experimental-Result (Code 297) — ein Grouped-AVP mit einer Vendor-Id plus einem Experimental-Result-Code —, womit 3GPP Fehler wie DIAMETER_ERROR_USER_UNKNOWN oder DIAMETER_ERROR_ROAMING_NOT_ALLOWED signalisiert.

Result-Code-Bereiche und gängige Werte
BereichKlasseBeispiel
1xxxInformationsbezogen1001 DIAMETER_MULTI_ROUND_AUTH
2xxxErfolgreich2001 DIAMETER_SUCCESS
3xxxProtokollfehler (Proxy)3002 UNABLE_TO_DELIVER, 3007 APPLICATION_UNSUPPORTED
4xxxVorübergehender Fehler (erneut versuchen)4181 AUTHENTICATION_DATA_UNAVAILABLE (3GPP)
5xxxPermanenter Fehler5001 AVP_UNSUPPORTED, 5012 UNABLE_TO_COMPLY
Häufig gestellte Fragen

Häufig gestellte Fragen

Was ist ein AVP in DIAMETER?

Ein AVP (Attribute-Value Pair) ist die Dateneinheit in jeder DIAMETER-Nachricht. Es trägt einen AVP Code, ein Flags-Oktett (V, M, P), eine Länge, eine optionale Vendor-Id und einen typisierten Wert. Alle Identitäten, Subskriptionsfelder, Kontingente und Ergebnisse werden als AVPs codiert, und eine Nachricht ist ein Header gefolgt von einer Liste davon.

Was bewirkt das M-Flag (Mandatory)?

Ist das M-Flag gesetzt und der Empfänger versteht das AVP nicht, muss er die gesamte Nachricht mit DIAMETER_AVP_UNSUPPORTED (5001) ablehnen. AVPs, die ein Peer gefahrlos ignorieren darf, werden daher mit gelöschtem M gesendet. Ein falsch genutztes M-Bit ist eine häufige Ursache für Zusammenwirken-Fehler zwischen Herstellern.

Was ist ein Grouped-AVP?

Ein Grouped-AVP ist ein AVP, dessen Wert selbst eine Liste von AVPs ist, wodurch sich strukturierte Datensätze verschachteln lassen. Subscription-Data, Charging-Rule-Install und Experimental-Result sind Grouped-AVPs. Die Gruppierung ist rekursiv, sodass ein vollständiges LTE-Subskriptionsprofil oder eine Menge von PCC-Regeln als ein einziges Top-Level-AVP übertragen werden kann.

Wie werden herstellerspezifische AVPs identifiziert?

Über das V-Flag plus ein Vendor-Id-Feld. Ist V gesetzt, folgt der Länge eine 32-Bit-Vendor-Id und der AVP Code wird im Nummernraum dieses Herstellers interpretiert. 3GPP nutzt die Vendor-Id 10415, um die AVPs für S6a, Gx, Cx und die übrigen Anwendungsschnittstellen zu definieren.

Was ist der Unterschied zwischen Result-Code und Experimental-Result?

Result-Code (AVP 268) trägt die IETF-Basis-Ergebniscodes, gruppiert als 1xxx/2xxx/3xxx/4xxx/5xxx. Experimental-Result (AVP 297) ist ein Grouped-AVP mit einer Vendor-Id und einem Experimental-Result-Code, das genutzt wird, wenn eine Anwendung einen herstellerspezifischen Fehler wie 3GPPs DIAMETER_ERROR_USER_UNKNOWN benötigt.

Was bedeuten die DIAMETER-Result-Code-Bereiche?

1xxx ist informativ, 2xxx ist Erfolg (2001 DIAMETER_SUCCESS), 3xxx ist ein Protokollfehler, meist von einem Proxy ausgelöst, 4xxx ist ein transienter Fehler, den der Client wiederholen darf, und 5xxx ist ein dauerhafter Fehler. Die führende Ziffer sagt einem Client, ob er wiederholen, scheitern oder umleiten soll.

Referenzen

Quellenspezifikationen

Diese Seite basiert auf den veröffentlichten Standards. (Wird in einem neuen Tab geöffnet.)

BNWird vom BroadNet -Entwicklungsteam betreut.·Messaging in Carrier-Qualität seit 2003
Hänge es an den Draht

Entwicklung mit echtem SMPP Binding und REST-API.

Fordern Sie Testzugriff mit echten Testschlüsseln an: Senden Sie zunächst an Ihre eigene verifizierte Nummer und gehen Sie dann in über 200 Ländern zum Produktivbetrieb über, sobald Ihre Absenderidentität und die Routen genehmigt wurden.