anycast

Metoda adresowania, w której jeden adres IP jest współdzielony przez wiele serwerów, a ruch trafia do najbliższego z nich. Zwiększa szybkość i odporność usług.

Anycast to metoda adresowania w sieci, w której jeden adres IP jest ogłaszany jednocześnie z wielu serwerów rozsianych po świecie, a ruch od użytkownika trafia do tego węzła, który jest „najbliżej” — w sensie sieciowym, nie geograficznym. Z punktu widzenia Twojego komputera istnieje jeden adres, np. 1.1.1.1, ale fizycznie odpowiada Ci jedna z setek maszyn. To trochę jak numer alarmowy 112: wykręcasz jeden numer, a odbiera najbliższa dyżurka.

Jak to działa

Cała magia dzieje się na poziomie routingu, konkretnie protokołu BGP. Każde centrum danych ogłasza ten sam prefiks (np. 1.1.1.0/24) swoim sąsiadom. Routery po drodze widzą wiele ścieżek do tego samego adresu i — zgodnie ze swoimi metrykami — wybierają najkrótszą. Efekt: pakiet z Warszawy ląduje w europejskim PoP-ie, a ten sam adres z Tokio obsłuży węzeł w Azji. Nikt nic nie przełącza ręcznie, decyduje topologia sieci.

Po co to robić? Po pierwsze szybkość — krótsza droga to niższe opóźnienia (latency). Po drugie odporność — gdy jeden węzeł padnie, BGP po prostu przestaje go ogłaszać i ruch płynie do pozostałych, często bez wiedzy użytkownika. Po trzecie rozkład obciążenia i tłumienie ataków DDoS: zalew ruchu rozkłada się na wiele lokalizacji zamiast zatapiać jeden serwer.

Przykład z praktyki

Najbardziej rozpoznawalne anycasty to publiczne resolwery DNS: Cloudflare 1.1.1.1 i Google 8.8.8.8, a także większość serwerów root DNS. Możesz to sam podejrzeć — zapytanie ping 1.1.1.1 z różnych krajów da różne czasy odpowiedzi, bo odpowiada inny węzeł. Jeszcze ładniej widać to przez mtr 1.1.1.1 albo traceroute 8.8.8.8: trasa kończy się w innym mieście w zależności od tego, skąd ją puścisz.

Częste błędy i mity

Najczęstsze nieporozumienie: anycast myli się z load balancerem. Klasyczny balancer działa na warstwie aplikacji w jednym DC, anycast działa na warstwie routingu między DC — to różne piętra. Drugi mit: „najbliższy” znaczy geograficznie. Nie — znaczy najbliższy według metryk BGP, więc czasem pakiet z Krakowa pojedzie dłuższą trasą niż podpowiada mapa.

Na co uważać: anycast świetnie pasuje do bezstanowego, krótkiego ruchu (DNS po UDP). Przy długich sesjach TCP teoretycznie zmiana trasy w trakcie mogłaby przekierować pakiety do innego węzła i zerwać połączenie, dlatego dla HTTPS stosuje się go z głową — zwykle w połączeniu z terminacją na brzegu (edge) i stabilnym routingiem.

Pojęcia powiązane

Warto skojarzyć anycast z: unicast (jeden adres, jeden host — standard), multicast i broadcast (jeden do wielu), BGP, CDN, DNS, PoP (Point of Presence) oraz mitygacją ataków DDoS.