Aller au contenu principal

4.3.1. Common Derived AVP Data Formats

Les formats de données AVP dérivés suivants sont couramment utilisés.

Address

Le format Address est dérivé du format AVP de base OctetString. Il s'agit d'une union discriminée représentant, par exemple, une adresse de 32 bits (IPv4) [RFC0791] ou 128 bits (IPv6) [RFC4291], octet le plus significatif en premier. Les deux premiers octets de l'AVP Address représentent l'AddressType, qui contient une famille d'adresses définie dans [IANAADFAM]. L'AddressType est utilisé pour discriminer le contenu et le format des octets restants.

Time

Le format Time est dérivé du format AVP de base OctetString. La chaîne DOIT contenir quatre octets, dans le même format que les quatre premiers octets du format d'horodatage NTP. Le format d'horodatage NTP est défini dans la Section 3 de [RFC5905].

Ceci représente le nombre de secondes depuis 0h le 1er janvier 1900 par rapport au temps universel coordonné (UTC).

Le 7 février 2036 à 6h 28m 16s UTC, la valeur temporelle débordera. Le protocole de temps réseau simple (SNTP) [RFC5905] décrit une procédure pour étendre le temps jusqu'en 2104. Cette procédure DOIT être prise en charge par tous les nœuds Diameter.

UTF8String

Le format UTF8String est dérivé du format AVP de base OctetString. Il s'agit d'une chaîne lisible par l'homme représentée à l'aide du jeu de caractères ISO/IEC IS 10646-1, encodée en tant qu'OctetString en utilisant le format de transformation UTF-8 [RFC3629].

Étant donné que des points de code supplémentaires sont ajoutés par des amendements à la norme 10646 de temps en temps, les implémentations DOIVENT être préparées à rencontrer n'importe quel point de code de 0x00000001 à 0x7fffffff. Les séquences d'octets qui ne correspondent pas à l'encodage valide d'un point de code dans le jeu de caractères UTF-8 ou qui sont en dehors de cette plage sont interdites.

L'utilisation de codes de contrôle DEVRAIT être évitée. Lorsqu'il est nécessaire de représenter une nouvelle ligne, la séquence de codes de contrôle CR LF DEVRAIT être utilisée.

L'utilisation d'espaces blancs de début ou de fin DEVRAIT être évitée.

Pour les points de code non directement pris en charge par le matériel ou le logiciel de l'interface utilisateur, un moyen alternatif de saisie et d'affichage, tel que l'hexadécimal, PEUT être fourni.

Pour les informations codées en US-ASCII 7 bits, le jeu de caractères UTF-8 est identique au jeu de caractères US-ASCII.

UTF-8 peut nécessiter plusieurs octets pour représenter un seul caractère / point de code ; ainsi, la longueur d'une UTF8String en octets peut être différente du nombre de caractères encodés.

Notez que le champ AVP Length d'une UTF8String est mesuré en octets et non en caractères.

DiameterIdentity

Le format DiameterIdentity est dérivé du format AVP de base OctetString.

DiameterIdentity  = FQDN/Realm

La valeur DiameterIdentity est utilisée pour identifier de manière unique soit :

  • Un nœud Diameter à des fins de détection de connexion en double et de boucle de routage.

  • Un Realm pour déterminer si les messages peuvent être satisfaits localement ou s'ils doivent être routés ou redirigés.

Lorsqu'une valeur DiameterIdentity est utilisée pour identifier un nœud Diameter, le contenu de la chaîne DOIT être le nom de domaine pleinement qualifié (FQDN) du nœud Diameter. Si plusieurs nœuds Diameter s'exécutent sur le même hôte, chaque nœud Diameter DOIT se voir attribuer une DiameterIdentity unique. Si un nœud Diameter peut être identifié par plusieurs FQDN, un seul FQDN devrait être choisi au démarrage et utilisé comme seule DiameterIdentity pour ce nœud, quelle que soit la connexion sur laquelle il est envoyé. Dans ce document, notez que DiameterIdentity est au format ASCII afin d'être compatible avec l'infrastructure DNS existante. Voir l'Annexe D pour les interactions entre le protocole Diameter et les noms de domaine internationalisés (IDN).

DiameterURI

Le DiameterURI DOIT suivre les règles de syntaxe des identificateurs de ressources uniformes (RFC3986) [RFC3986] spécifiées ci-dessous :

"aaa://" FQDN [ port ] [ transport ] [ protocol ]
; Aucune sécurité de transport

"aaas://" FQDN [ port ] [ transport ] [ protocol ]
; Sécurité de transport utilisée

FQDN = < Nom de domaine pleinement qualifié >

port = ":" 1*DIGIT
; L'un des ports utilisés pour écouter les
; connexions entrantes.
; S'il est absent, le port Diameter par défaut
; (3868) est supposé si aucune sécurité de transport
; n'est utilisée et le port 5658 lorsque la
; sécurité de transport (TLS/TCP et DTLS/SCTP)
; est utilisée.

transport = ";transport=" transport-protocol
; L'un des transports utilisés pour écouter les
; connexions entrantes. S'il est absent, le
; protocole par défaut est supposé être TCP.
; UDP NE DOIT PAS être utilisé lorsque le champ
; aaa-protocol est défini sur diameter.

transport-protocol = ( "tcp" / "sctp" / "udp" )

protocol = ";protocol=" aaa-protocol
; S'il est absent, le protocole AAA par défaut
; est Diameter.

aaa-protocol = ( "diameter" / "radius" / "tacacs+" )

Voici des exemples d'identités d'hôte Diameter valides :

aaa://host.example.com;transport=tcp
aaa://host.example.com:6666;transport=tcp
aaa://host.example.com;protocol=diameter
aaa://host.example.com:6666;protocol=diameter
aaa://host.example.com:6666;transport=tcp;protocol=diameter
aaa://host.example.com:1813;transport=udp;protocol=radius

Enumerated

Le format Enumerated est dérivé du format AVP de base Integer32. La définition contient une liste de valeurs valides et leur interprétation et est décrite dans l'application Diameter introduisant l'AVP.

IPFilterRule

Le format IPFilterRule est dérivé du format AVP de base OctetString et utilise le jeu de caractères ASCII. La syntaxe des règles est un sous-ensemble modifié d'ipfw(8) de FreeBSD. Les paquets peuvent être filtrés en fonction des informations suivantes qui y sont associées :

Direction                          (entrant ou sortant)
Source and destination IP address (éventuellement masquée)
Protocol
Source and destination port (listes ou plages)
TCP flags
IP fragment flag
IP options
ICMP types

Les règles pour la direction appropriée sont évaluées dans l'ordre, la première règle correspondante terminant l'évaluation. Chaque paquet est évalué une fois. Si aucune règle ne correspond, le paquet est abandonné si la dernière règle évaluée était un permit, et passé si la dernière règle était un deny.

Les filtres IPFilterRule DOIVENT suivre le format :

action dir proto from src to dst [options]

action permit - Autoriser les paquets qui correspondent à la règle.
deny - Abandonner les paquets qui correspondent à la règle.

dir "in" provient du terminal, "out" va vers le terminal.

proto Un protocole IP spécifié par un numéro. Le mot-clé "ip"
signifie que n'importe quel protocole correspondra.

src and dst <address/mask> [ports]

Le <address/mask> peut être spécifié comme :
ipno Un numéro IPv4 ou IPv6 en notation décimale
pointée ou forme IPv6 canonique. Seul ce
numéro IP exact correspondra à la règle.

ipno/bits Un numéro IP comme ci-dessus avec une largeur
de masque de la forme 192.0.2.10/24. Dans ce
cas, tous les numéros IP de 192.0.2.0 à
192.0.2.255 correspondront. La largeur de bits
DOIT être valide pour la version IP, et le
numéro IP NE DOIT PAS avoir de bits définis
au-delà du masque. Pour qu'une correspondance
se produise, la même version IP doit être
présente dans le paquet qui a été utilisée
pour décrire l'adresse IP. Pour tester une
version IP particulière, la partie bits peut
être définie à zéro. Le mot-clé "any" est
0.0.0.0/0 ou l'équivalent IPv6. Le mot-clé
"assigned" est l'adresse ou l'ensemble
d'adresses attribuées au terminal. Pour IPv4,
une première règle typique est souvent "deny
in ip! assigned".

Le sens de la correspondance peut être inversé en
faisant précéder une adresse du modificateur not (!),
ce qui fait que toutes les autres adresses correspondent
à la place. Cela n'affecte pas la sélection des numéros
de port.

Avec les protocoles TCP, UDP et SCTP, des ports
facultatifs peuvent être spécifiés comme :

{port/port-port}[,ports[,...]]

La notation '-' spécifie une plage de ports (y compris
les limites).

Les paquets fragmentés qui ont un décalage non nul
(c'est-à-dire pas le premier fragment) ne correspondront
jamais à une règle qui a une ou plusieurs spécifications
de port. Voir l'option frag pour des détails sur la
correspondance des paquets fragmentés.

options:
frag Correspond si le paquet est un fragment et que ce n'est
pas le premier fragment du datagramme. frag ne peut pas
être utilisé en conjonction avec tcpflags ou des
spécifications de port TCP/UDP.

ipoptions spec
Correspond si l'en-tête IP contient la liste d'options
séparées par des virgules spécifiée dans spec. Les
options IP prises en charge sont :

ssrr (routage source strict), lsrr (routage source
lâche), rr (enregistrement de route de paquet) et ts
(horodatage). L'absence d'une option particulière peut
être indiquée par un '!'.

tcpoptions spec
Correspond si l'en-tête TCP contient la liste d'options
séparées par des virgules spécifiée dans spec. Les
options TCP prises en charge sont :

mss (taille de segment maximale), window (annonce de
fenêtre tcp), sack (accusé de réception sélectif), ts
(horodatage rfc1323) et cc (compte de connexion t/tcp
rfc1644). L'absence d'une option particulière peut être
indiquée par un '!'.

established
Paquets TCP uniquement. Correspond aux paquets qui ont
les bits RST ou ACK définis.

setup Paquets TCP uniquement. Correspond aux paquets qui ont
le bit SYN défini mais pas le bit ACK.

tcpflags spec
Paquets TCP uniquement. Correspond si l'en-tête TCP
contient la liste de drapeaux séparés par des virgules
spécifiée dans spec. Les drapeaux TCP pris en charge sont :

fin, syn, rst, psh, ack et urg. L'absence d'un drapeau
particulier peut être indiquée par un '!'. Une règle qui
contient une spécification tcpflags ne peut jamais
correspondre à un paquet fragmenté qui a un décalage non
nul. Voir l'option frag pour des détails sur la
correspondance des paquets fragmentés.

icmptypes types
Paquets ICMP uniquement. Correspond si le type ICMP est
dans la liste types. La liste peut être spécifiée comme
n'importe quelle combinaison de plages ou de types
individuels séparés par des virgules. Les valeurs
numériques et les valeurs symboliques listées ci-dessous
peuvent être utilisées. Les types ICMP pris en charge sont :

echo reply (0), destination unreachable (3),
source quench (4), redirect (5), echo request
(8), router advertisement (9), router
solicitation (10), time-to-live exceeded (11), IP
header bad (12), timestamp request (13),
timestamp reply (14), information request (15),
information reply (16), address mask request (17)
et address mask reply (18).

Il existe un type de paquet que le dispositif d'accès DOIT toujours rejeter, c'est un fragment IP avec un décalage de fragment de un. C'est un paquet valide, mais il n'a qu'une seule utilisation, essayer de contourner les pare-feu.

Un dispositif d'accès qui est incapable d'interpréter ou d'appliquer une règle deny DOIT terminer la session. Un dispositif d'accès qui est incapable d'interpréter ou d'appliquer une règle permit PEUT appliquer une règle plus restrictive. Un dispositif d'accès PEUT appliquer ses propres règles deny avant les règles fournies, par exemple pour protéger l'infrastructure du propriétaire du dispositif d'accès.