Před nedávnem byla vydána tisková zpráva, že sdružení NIX.CZ uvedlo do provozu první DNS anycast ve střední Evropě, nazvaný AS112. Pojďme se blíže podívat, co to vlastně v praxi znamená.
Ještě než se pustíme do detailů DNS anycastingu, dovolím si trochu se pozastavit nad termínem anycast a vysvětlit, jak se liší od ostatních druhů komunikace. V počítačových sítích se používají následující tři způsoby komunikace. Pro zjednodušení uvažuji jednosměrně:
- unicast – nejběžnější způsob komunikace, jak ho jistě každý zná; komunikace probíhá pouze mezi dvěma počítači, jeden posílá data a druhý je přijímá,
- multicast – způsob v současném IP světě poměrně málo užívaný, jde o skupinovou komunikaci, tedy jeden stroj vysílá a více strojů přijímá všechna data,
- anycast – je velmi podobný multicastu, protože i zde je více příjemců, nicméně zpráva se neduplikuje a je doručena pouze jednomu z nich.
Ačkoliv anycast a multicast vypadají velmi podobně, implementovat multicast v dnešním Internetu je výrazně technicky složitější, a proto multicastovou komunikaci dnes drtivá většina ISP nepodporuje. Naopak anycast podporují všechny sítě normálně, protože používá stejné principy jako unicastová komunikace, a tedy pro jeho používání není nutné nijak upravovat infrastrukturu či software. Koncept anycastu je diskutován v už poměrně starém RFC-1546 a vývoj je shrnut v RFC-2101.
Princip implementace je takový, že anycastová IP adresa se „propaguje“ do routovacího protokolu „z více míst“. Tedy více serverů (obvykle se stejnou funkcí) má jednu IP adresu a routovací informaci o dané IP adrese šíří do svého okolí. Pokud tedy klient pošle nějakou zprávu na onu IP adresu, zpráva je doručena serveru, který je z hlediska IP routingu „nejblíže“. Propagaci je možné provádět pouze v rámci sítě jednoho ISP (tedy přesněji v rámci jeho autonomního systému – AS) v jeho interním routovacím protokolu (OSPF, IS-IS…) nebo je možné ji provádět i v celém Internetu pomocí protokolu BGP.
Výhody jsou poměrně zřejmé: anycast rozkládá zátěž serverů, zkracuje cesty k serverům a snižuje odezvy a tím přispívá ke zvýšení spolehlivosti služby, což je obzvláště znát v případech DDoS útoků.
Avšak anycast není možné použít pro služby, které vytváří dlouhodobé relace, kvůli změnám v routingu může být totiž každý packet doručen jinému serveru.
Naopak ideálním se pro anycast jeví DNS protokol; tuto oblast podrobněji popisuje dokument RFC-3258. DNS anycast je v poslední době velmi hojně používán. Především správci kořenových serverů a některých domén nejvyšší úrovně tím odpověděli na množící se DDoS útoky na jejich služby.
A nyní se vraťme na začátek. Tak co že to vlastně ten NIX.CZ udělal? Projekt AS112 je jen určitou speciální aplikací DNS anycastingu. Zvláštní je v tom, že jeho servery neslouží pro překlad DNS dotazů, ale spíše pro jejich pohlcování.
Rozložení IP adres v dnešním Internetu se trochu liší od původních představ autorů. Dnes už neplatí, že každý počítač má svou jedinečnou IP adresu. Naopak k Internetu je dnes připojeno velké množství sítí, jejichž počítače jsou očíslovány IP adresami ze stejného rozsahu popsaného v RFC-1918. Tyto adresy byly původě určeny pro sítě, které se k Internetu nepřipojí, a je tedy zaručeno, že nejsou do routingu Internetu propagovány. Počítače v těchto sítích komunikují s okolním světem například pomocí mechanismu zvaného Network Address Translation (NAT) a daní za takové očíslování je mimo jiné fakt, že takto očíslované servery nemohou (nebo jen obtížně) poskytovat služby ostatním uživatelům Internetu. Nicméně pokud počítače v takové síti spolu komunikují, stane se často, že jeden z nich potřebuje překlad protější IP adresy na jméno a špatně nakonfigurovaný místní DNS server takový dotaz přepošle „výš“, na centrální DNS servery Internetu.
Jak už použití těchto adres naznačuje, takový dotaz nemůže dostat žádnou rozumnou odpověď a pouze obtěžuje DNS servery. Proto vzniknul projekt AS112, v jehož rámci se po světě instalují anycastová zrcadla DNS serverů, která tyto dotazy zodpovídají. Umístění takové instance v lokálním peeringovém uzlu přináší šetření zahraniční konektivity a zrychlení zodpovídání těchto nadbytečných dotazů, a tedy i paradoxně (malé) zrychlení komunikace dvou počítačů v lokální síti. Tento přínos může být velmi markantní zejména v případě šíření nějakého viru a podobně.
Na závěr prozradím příznivcům UNIXových systémů, jak poznají, zda jejich ISP používá DNS anycast AS112 umístěný v NIX.CZ. Zkuste do příkazové řádky napsat
dig @prisoner.iana.org hostname.as112.net any
a mohli byste vidět třeba takovou odpověď:
hostname.as112.net. 300 IN SOA
as112.nix.cz. noc.nix.cz. 2004050501 3600 600 2592000 15
hostname.as112.net. 300 IN TXT
"http://www.nix.cz"
hostname.as112.net. 300 IN TXT
"Unicast IP: 195.47.235.16"
hostname.as112.net. 300 IN TXT
"See http://as112.net/ for more information."
hostname.as112.net. 300 IN TXT
"NIX.CZ, Neutral Internet eXchange of Czech Republic"
hostname.as112.net. 300 IN NS
blackhole-2.iana.org.
hostname.as112.net. 300 IN NS
blackhole-1.iana.org.
Pro rozpoznání zrcadla kořenového serveru
F použijte:
dig hostname.bind @f.root-servers.net chaos txt
A pro zrcadlo domény .org:
dig whoareyou.ultradns.net @tld1.ultradns.net