Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

RFC 7065: Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers

Date de publication du RFC : Novembre 2013
Auteur(s) du RFC : M. Petit-Huguenin (Impedance Mismatch), S. Nandakumar, G. Salgueiro, P. Jones (Cisco Systems)
Chemin des normes
Première rédaction de cet article le 23 novembre 2013


Ce court RFC normalise un nouveau plan d'URI, turn:, qui sera utilisé pour la configuration des clients TURN, un protocole de traversée des obstacles comme les routeurs NAT.

C'est le travail sur WebRTC qui a ravivé l'intérêt pour ce nouveau modèle d'URI (envisagé depuis longtemps mais jamais normalisé). WebRTC est un mécanisme de communication directe entre navigateurs Web. Souvent, les logiciels WebRTC vont devoir passer à travers des environnements hostiles comme des routeurs NAT. Une des techniques fréquemment utilisées pour aider ce passage est TURN, normalisé dans le RFC 5766, qui permet à un client TURN, en se connectant à un serveur TURN (en général installé par un fournisseur de services, par exemple SIP), de faire relayer ses paquets par le serveur TURN. TURN est une extension de STUN et s'utilise pour les cas désespérés, lorsque la seule solution pour communiquer est de faire relayer tout le trafic.

Mais, pour cela, il faut que le client soit configuré avec les coordonnées d'un serveur TURN. Actuellement, cela se fait d'une manière spécifique à chaque client. D'où l'idée d'avoir un mécanisme simple de désignation du serveur TURN, un URI comme turn:example.net. Il n'y aura plus qu'à le copier/coller à l'endroit indiqué. Cela simplifiera la configuration et la documentation. Combiné avec le mécanisme de résolution du RFC 5928, il n'y aura désormais presque rien à faire pour configurer TURN.

La section 3 fournit la syntaxe exacte. Il y a deux plans d'URI, turn: et turns:, le second servant aux connexions sécurisées avec TLS. Ils sont notés dans le registre IANA des plans. Un numéro de port est possible comme par exemple turns:provider.example:8888. S'il est absent, le port par défaut est 3478 pour turn: et 5349 pour turns:. Rappelez-vous que le nom du serveur, lui, sera déduit du nom de domaine indiqué dans l'URI par une recherche SRV, après passage par le mécanisme de résolution du RFC 5928.

Et les mises en œuvre ? Le logiciel turnuri (distribué en http://debian.implementers.org/stable/source/turnuri.tar.gz) met en œuvre les URI turn: ainsi que le mécanisme de résolution du RFC 5928. C'est également le cas de la bibliothèque libjingle, qu'utilise Chrome pour WebRTC (Firefox a sa propre implémenation).

Ce RFC a eu une histoire très longue et compliquée, remontant à plusieurs années. Ceux qui s'intéressent aux choix effectués (par exemple d'un plan turns: plutôt que d'un paramètre ;proto=tls dans l'URI) peuvent consulter un article de l'auteur sur son blog et la discussion à l'IETF. Parmi les nombreux messages échangés à l'IETF sur ces URI, je vous suggère la soumission originale et la discussion qui a suivi.


Téléchargez le RFC 7065

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)