# Teredo (protocole)

En informatique, le protocole Teredo, « Tunneling IPv6 over UDP through NAT » (RFC 4380), définit une méthode permettant d'accéder à l'Internet IPv6 derrière un équipement réalisant du NAT. Il fait partie des mécanismes de transition d'IPv4 vers IPv6 et consiste à encapsuler les paquets IPv6 dans des datagrammes UDP sur IPv4 entre le client et le relais Teredo, avec l'aide d'un serveur Teredo.

## But

6to4, le protocole d'encapsulation IPv6 sur IPv4 le plus courant, nécessite que le matériel au bout du tunnel d'encapsulation ait une adresse IPv4 publique. Pourtant actuellement et pour combler l'épuisement des adresses IPv4, la plupart de ses hôtes sont reliés au réseau IPv4 par un périphérique faisant du NAT. Ainsi, l'adresse publique est assignée à ce périphérique NAT et c'est donc lui qui doit implémenter le protocole 6to4. Malheureusement, une grande partie de ces équipements ne peuvent pas être mis à jour pour fournir le support de 6to4 pour des raisons techniques ou économiques.
Teredo permet de résoudre ce problème en encapsulant les paquets IPv6 dans des datagrammes UDP/IPv4, que la plupart des NAT peuvent transmettre correctement. Ainsi, les hôtes IPv6 derrière des NAT peuvent être utilisés comme points de terminaison du tunnel Teredo, même quand ils n'ont pas une adresse IPv4 publique dédiée. En effet, un hôte implémentant le protocole Teredo peut acquérir une connectivité IPv6 sans la coopération de l'environnement du reste du réseau local.
Teredo est destiné à être une mesure temporaire : à long terme, tous les hôtes IPv6 devraient utiliser la connectivité IPv6 native. Le protocole Teredo comprend des dispositions pour une procédure en coucher de soleil: les implémentations de Teredo doivent fournir un moyen de pouvoir arrêter d'utiliser la connectivité Teredo lorsque IPv6 sera disponible et permettra une connectivité moins compliquée.

## Présentation

Le protocole Teredo remplit plusieurs fonctions :
* diagnostiquer la connectivité UDP sur IPv4 et découvrir le type de NAT actuellement utilisé (en utilisant une version simplifiée du protocole STUN) ;
* attribuer une adresse IPv6 unique, routable à l'échelle mondiale à chaque hôte utilisant celui-ci ;
* encapsuler les paquets IPv6 dans des datagrammes UDPv4 pour la transmission sur un réseau IPv4 en tenant compte de la traversée des NAT ;
* router les communications entre les hôtes Teredo et les hôtes IPv6 natifs (soit non Teredo).

### Types de nœud Teredo

Teredo définit plusieurs types de nœud :
* Un client Teredo est un hôte qui dispose d'une connectivité IPv4 à l'Internet derrière un NAT et utilise le protocole de tunneling Teredo pour accéder à l'Internet IPv6. Les clients Teredo reçoivent une adresse IPv6 qui commence par le préfixe Teredo 2001:0000::/32
* Un serveur Teredo est un hôte connu qui est utilisé pour la configuration initiale d'un tunnel Teredo. Un serveur Teredo ne transmet jamais tout le trafic pour le client (en dehors des pings IPv6), et a donc de très modestes besoins en bande passante (quelques centaines de bits par seconde et par client au maximum), ce qui permet à un serveur unique de subvenir à un grand nombre de clients. En outre, un serveur Teredo peut être mis en œuvre de manière totalement sans état, utilisant ainsi la même quantité de mémoire indépendamment du nombre de clients qu'elle soutient.
* Un relais Teredo est un hôte connecté à la fois en IPv4 et en IPv6, et par lequel passe tout le trafic destiné à l'Internet v6, il a donc de gros besoins en bande passante.