Teredo je dalším z automatických tunelovacích mechanismů, které se snaží zprostředkovat IPv6 komunikaci jednotlivým strojům, které se nacházejí uprostřed IPv4 sítě (podobně jako například ISATAP). Jeho síla spočívá především v tom, že dokáže do značné míry procházet Záporyy a je proto vhodný například pro domácí sítě, které dnes obvykle bývají za NATem. Platí za to nízkou efektivitou.
Teredo používá komplikovaný formát adres, jež obsahují několik informací ze světa IPv4. Začínají konstantním prefixem 2001::/32, za nímž následuje IPv4 adresa Teredo serveru, který adresu přidělil. První polovinu adresy tedy určuje server. Identifikátor rozhraní začíná příznaky o délce 16 bitů. Kromě obvyklých příznaků U a G společných pro všechny identifikátory přidává příznak C (Cone), který je nastaven, pokud se majitel adresy nachází za trychtýřovým NATem. Následuje 16b číslo UDP portu a 32b IPv4 adresa klientova NATu.
Jako klient je v terminologii Teredo označován počítač v lokální IPv4 síti, který by chtěl získat IPv6 připojení. Nejprve musí získat IPv6 adresu, k čemuž slouží kvalifikační procedura, která zahrnuje následující kroky:
Vzájemná komunikace dvou Teredo klientů probíhá přímo. Pokud má cíl nastaven příznak C, lze datový paket poslet rovnou, protože cílový NAT přijímá data odkudkoli. V opačném případě pošle odesilatel dvě tak zvané bubliny. Jednu přímo (aby otevřela cestu v místním NATu, tu ale cílový NAT nepropustí), druhou přes Teredo server. Ta dorazí do cíle (jeho omezený NAT má z předchozí komunikace otevřenou komunikační cestu mezi klientem a serverem) a cílový klient po jejím příchodu odešle bubilnu v protisměru, přímo na adresu odesilatele. Tím ve svém NATu otevře cestu i pro něj. Příchod bubliny (cesta pro ni je v odesilatelově NATu otevřená díky jeho první bublině) od adresáta znamená, že lze odeslat vlastní datagram. Tato procdura samozřejmě probíhá jen při zahájení komunikace mezi dvěma novými klienty. Jakmile se NATy otevřou, lze cestu využívat bez dalších obstrukcí (až po delší nečinnosti si NATy příslušné položky opět odstraní).
Přenosy dat mezi Teredo klientem a nativními IPv6 stroji zajišťuje Teredo zprostředkovatel (relay). Vůči světu IPv6 se chová zcela standardně a směrovacími algoritmy ohlašuje, že jeho prostřednictvím je dostupná síť 2001::/32. Chce-li Teredo klient odeslat data do IPv6 sítě, musí zjistit adresu vhodného zprostředkovatele. Pošle proto ICMPv6 echo (čili IPv6 ping) cílovému stroji, ovšem zabalí jej do IPv4 UDP paketu adresovaného svému serveru. Ten zprávu vybalí, odešle po IPv6 příjemci, který odpoví. Díky směrovacím mechanismům odpověď dorazí k Teredo zprostředkovateli nejbližšímu k odpovídajícímu stroji. Cílovou adresou odpovědi je IPv6 adresa Teredo klienta. Má-li nastaven příznak, pošle zprostředkovatel odpověď tunelovanou do IPv4 přímo Teredo klientovi. V opačném případě ji pošle prostřednictvím jeho Teredo serveru. V obou případech se klient dozví adresu zprostředkovatele a ví, na jakou adresu má tunelovat pakety odesílané danému IPv6 cíli.
Jak je vidět, role Teredo serveru je velmi omezená a nepředstavuje pro něj žádnou extrémní zátěž. Je využíván jen během kvalifikační procedury a následně při předávání zpráv echo během hledání vhodného zprostředkovatele. Dokonce si ani nemusí vést žádnou evidenci klientů, jeho chování je zcela bezstavové.
Teredo se dá použít k získání IPv6 připojení téměř kdekoli, pokud místní NAT není opravdu ošklivý. Nevýhodou je, že datové přenosy bývají velmi krkolomné, zejména přestupy mezi Teredo světem a nativním IPv6. Doba doručení datagramů tak vzroste často více než na desetinásobek proti normálnímu stavu.
CESNET, z. s. p. o.
Generála Píky 26
160 00 Praha 6
Tel: +420 234 680 222
Fax: +420 224 320 269
info@cesnet.cz
Tel: +420 234 680 222
GSM: +420 602 252 531
Fax: +420 224 313 211
support@cesnet.cz