Aller au contenu principal

14. Nouveaux attributs STUN (New STUN Attributes)

Cette extension STUN définit les nouveaux attributs suivants :

  • 0x000C : CHANNEL-NUMBER
  • 0x000D : LIFETIME
  • 0x0010 : Réservé (était BANDWIDTH)
  • 0x0012 : XOR-PEER-ADDRESS
  • 0x0013 : DATA
  • 0x0016 : XOR-RELAYED-ADDRESS
  • 0x0018 : EVEN-PORT
  • 0x0019 : REQUESTED-TRANSPORT
  • 0x001A : DONT-FRAGMENT
  • 0x0021 : Réservé (était TIMER-VAL)
  • 0x0022 : RESERVATION-TOKEN

Certains de ces attributs ont des longueurs qui ne sont pas des multiples de 4. Selon les règles de STUN, tout attribut dont la longueur n'est pas un multiple de 4 octets DOIT (MUST) être immédiatement suivi de 1 à 3 octets de remplissage pour garantir que l'attribut suivant (s'il y en a un) commencerait sur une limite de 4 octets (voir [RFC5389]).

14.1. CHANNEL-NUMBER

L'attribut CHANNEL-NUMBER contient le numéro de canal. La partie valeur de cet attribut fait 4 octets de long et se compose d'un entier non signé de 16 bits suivi d'un champ RFFU (Reserved For Future Use, Réservé pour Utilisation Future) de deux octets, qui DOIT (MUST) être défini à 0 lors de la transmission et DOIT (MUST) être ignoré à la réception.

     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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Channel Number | RFFU = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

14.2. LIFETIME

L'attribut LIFETIME représente la durée pendant laquelle le serveur maintiendra une allocation en l'absence de rafraîchissement. La partie valeur de cet attribut fait 4 octets de long et se compose d'une valeur intégrale non signée de 32 bits représentant le nombre de secondes restantes jusqu'à l'expiration.

14.3. XOR-PEER-ADDRESS

Le XOR-PEER-ADDRESS spécifie l'adresse et le port du pair tels que vus depuis le serveur TURN (par exemple, l'adresse de transport réflexive du serveur du pair si le pair est derrière un NAT). Il est encodé de la même manière que XOR-MAPPED-ADDRESS [RFC5389].

14.4. DATA

L'attribut DATA est présent dans toutes les indications Send et Data. La partie valeur de cet attribut est de longueur variable et se compose des données d'application (c'est-à-dire les données qui suivraient immédiatement l'en-tête UDP si les données étaient envoyées directement entre le client et le pair). Si la longueur de cet attribut n'est pas un multiple de 4, alors un remplissage doit être ajouté après cet attribut.

14.5. XOR-RELAYED-ADDRESS

Le XOR-RELAYED-ADDRESS est présent dans les réponses Allocate. Il spécifie l'adresse et le port que le serveur a alloués au client. Il est encodé de la même manière que XOR-MAPPED-ADDRESS [RFC5389].

14.6. EVEN-PORT

Cet attribut permet au client de demander que le port dans l'adresse de transport relayée soit pair, et (facultativement) que le serveur réserve le numéro de port suivant plus élevé. La partie valeur de cet attribut fait 1 octet de long. Son format est :

     0
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|R| RFFU |
+-+-+-+-+-+-+-+-+

La valeur contient un seul drapeau de 1 bit :

  • R : Si 1, le serveur est invité à réserver le numéro de port suivant plus élevé (sur la même adresse IP) pour une allocation ultérieure. Si 0, aucune telle réservation n'est demandée.

Les 7 autres bits de la valeur de l'attribut doivent être définis à zéro lors de la transmission et ignorés à la réception.

Puisque la longueur de cet attribut n'est pas un multiple de 4, un remplissage doit suivre immédiatement cet attribut.

14.7. REQUESTED-TRANSPORT

Cet attribut est utilisé par le client pour demander un protocole de transport spécifique pour l'adresse de transport allouée. La valeur de cet attribut fait 4 octets avec le format suivant :

     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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Protocol | RFFU |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Le champ Protocol spécifie le protocole souhaité. Les points de code utilisés dans ce champ sont tirés de ceux autorisés dans le champ Protocol de l'en-tête IPv4 et le champ NextHeader de l'en-tête IPv6 [Protocol-Numbers]. Cette spécification n'autorise que l'utilisation du point de code 17 (User Datagram Protocol, Protocole de Datagramme Utilisateur).

Le champ RFFU DOIT (MUST) être défini à zéro lors de la transmission et DOIT (MUST) être ignoré à la réception. Il est réservé pour une utilisation future.

14.8. DONT-FRAGMENT

Cet attribut est utilisé par le client pour demander que le serveur définisse le bit DF (Don't Fragment, Ne Pas Fragmenter) dans l'en-tête IP lors du relais des données d'application au pair. Cet attribut n'a pas de partie valeur et donc le champ de longueur d'attribut est 0.

14.9. RESERVATION-TOKEN

L'attribut RESERVATION-TOKEN contient un jeton qui identifie de manière unique une adresse de transport relayée détenue en réserve par le serveur. Le serveur inclut cet attribut dans une réponse de succès pour informer le client du jeton, et le client inclut cet attribut dans une requête Allocate ultérieure pour demander au serveur d'utiliser cette adresse de transport relayée pour l'allocation.

La valeur de l'attribut fait 8 octets et contient la valeur du jeton.