cs:teredo

Teredo

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.

Kvalifikační procedura

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:

  1. Klient pošle výzvu směrovači zabalenou do UDP datagramu na adresu Teredo serveru. Tu musí znát, většina systémů ji má předkonfigurovánu - například MS Windows používají teredo.ipv6.microsoft.com. Ve svém identifkátoru rozhraní nastaví příznak C.
  2. Paket projde klientovým NATem, který změní jeho IPv4 adresu na svou a UDP port na vhodnou hodnotu.
  3. Server pošle zpět ohlášení směrovače, k němuž připojí volbu obsahující IPv4 adresu a UDP port z výzvy, aby klient měl podklady pro vytvoření identifkátoru rozhraní. Toto ohlášení pošle z jiné IPv4 adresy, než na kterou dorazila výzva.
  4. Pokud klientovi ohlášení dorazí, znamená to, že jeho NAT je trychtýřový. Vygeneruje si identifikátor rozhraní s nastaveným příznakem C a může začít pracovat.
  5. Jestliže klient po několika pokusech nedostane ohlášení, vypne v následujících výzvách směrovači příznak C. Pokud na ně dorazí ohlášení, znamená to, že jeho NAT není trychtýřový a vytvoří si identifikátor rozhraní s nulovým příznakem C. V tom případě klient pošle další výzvu směrovači na jinou IPv4 adresu Teredo serveru. Vrátí-li se ohlášení s jinou adresou a/nebo portem NATu, znamená to, že klientův NAT je symetrický a Teredo nelze použít. Dostane-li stejné údaje, jedná se o omezený NAT, s nímž se Teredo dokáže vyrovnat.
  6. Vytvořením adresy na straně klietna (podle bodu 4 nebo 5) kvalifikační procedura končí.

Datové přenosy

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é.

Použití

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.

Další informace

  • RFC 4380 - specifikace Teredo
Poslední úprava:: 24.09.2019 12:42