Co to jest „anycast” i jak jest pomocny?

85

Nigdy nie słyszałem o anycastie jeszcze kilka sekund temu, kiedy przeczytałem „ Jakie są fajne lub przydatne sztuczki z serwerem / siecią? ”.

Artykuł w Wikipedii „ Anycast ” na ten temat jest dość formalny i tak naprawdę nie przywołuje mentalnego obrazu tego, w jaki sposób mógłby zostać użyty.

Czy ktoś może wyjaśnić w kilku nieformalnych zdaniach, czym jest „anycast”, jak go skonfigurować (ogólnie) i jakie są jego zalety (co ułatwia)?

Nazwa Użytkownika
źródło

Odpowiedzi:

88

Anycast to technika sieciowa, w której ten sam prefiks IP jest reklamowany z wielu lokalizacji. Następnie sieć decyduje, do której lokalizacji kierować żądanie użytkownika, w oparciu o koszty protokołu routingu i ewentualnie „kondycję” serwerów reklamowych.

Anycast ma kilka zalet. Po pierwsze, w stanie ustalonym użytkownicy usługi anycast (DNS jest doskonałym przykładem) zawsze będą łączyć się z „najbliższym” (z punktu widzenia protokołu routingu) serwerem DNS. Zmniejsza to opóźnienia, a także zapewnia poziom równoważenia obciążenia (przy założeniu, że klienci są równomiernie rozmieszczeni w całej sieci).

Kolejną zaletą jest łatwość zarządzania konfiguracją. Zamiast konfigurować różne serwery DNS w zależności od miejsca wdrożenia serwera / stacji roboczej (Azja, Ameryka, Europa), masz jeden adres IP skonfigurowany w każdej lokalizacji.

W zależności od sposobu implementacji anycast może również zapewnić poziom wysokiej dostępności. Jeśli ogłoszenie trasy anycast jest uwarunkowane pewnego rodzaju sprawdzeniem kondycji (np. Zapytanie DNS dla dobrze znanej domeny, w tym przykładzie), to gdy tylko serwer zawiedzie, jego trasa może zostać usunięta. Po ponownym połączeniu sieci żądania użytkowników będą bezproblemowo przekazywane do następnej najbliższej instancji DNS, bez potrzeby jakiejkolwiek ręcznej interwencji lub rekonfiguracji.

Ostatnią zaletą jest skalowanie w poziomie; jeśli stwierdzisz, że jeden serwer jest przeciążony, po prostu zainstaluj inny w miejscu, które pozwoli mu przyjąć pewną część żądań przeciążonego serwera. Ponownie, ponieważ nie jest wymagana konfiguracja klienta, można to zrobić bardzo szybko.

Murali Suriar
źródło
Czy anycast wykorzystuje większą przepustowość w porównaniu do emisji pojedynczej? Wyobraź sobie, że mamy tysiąc serwerów, które współużytkują ten sam adres IP, kiedy wysyłamy pakiet na ten adres, czy nie zajmie to większej przepustowości niż w przypadku emisji pojedynczej?
Pacerier
5
Nie - ruch wysyłany na dowolny adres dotrze tylko do jednej lokalizacji reklamującej ten adres. Być może myślisz o multiemisji , w której pakiety wysyłane na adres grupy multiemisji są wysyłane do wszystkich hostów zainteresowanych tą grupą.
Murali Suriar
Czy problem „ Zamiast konieczności konfigurowania różnych serwerów DNS w zależności od miejsca wdrożenia serwera / stacji roboczej ” nie został rozwiązany według nazw domen? Jaki jest sens anycastu, gdy po prostu powiela to, co już robią nazwy domen?
Pacerier
1
@Pacerier - nie można używać nazw domen do znajdowania serwera DNS - jest to zależność cykliczna. Przykład: skonfiguruj dns.foo.com. jako twój serwer DNS. Na jaki adres IP mam wysyłać żądania do dns.foo.com? Wiem, sprawdzę to w DNS. itp.
Murali Suriar
32

Jedną z rzeczy, które często mylą mnie w rozumieniu „anycast” jest to, że chociaż jest to termin na wysokim poziomie, w praktycznej realizacji zwykle sprowadza się do dwóch przykładów:

  1. Routery używające protokołu BGP do reklamowania tego samego bloku IP za pośrednictwem wielu ścieżek AS jako szorstki sposób przekierowywania użytkowników do „bliższej” strony. Jednocześnie zapewnia prawie przezroczyste przełączanie awaryjne na inne witryny, po prostu wycofując trasy z niespokojnej witryny. Może to być przydatne w prawie każdym protokole, choć oczywiście rodzi wiele problemów z synchronizacją danych zaplecza.

  2. Reklama tego samego adresu IP usługi z wielu punktów we własnej sieci (poprzez routing statyczny , OSPF , EIGRP lub cokolwiek innego). Jeśli trasy są różnie ważone , działa to jako mechanizm przełączania awaryjnego. Jeśli trasy są równomiernie ważone , może skorzystać z możliwości równoważenia obciążenia na pakiet lub na przepływ w większości routerów znanych marek. Musisz uważać, aby protokół warstwy aplikacji był z tym wygodny, dlatego prawie zawsze słyszysz o tym w połączeniu z DNSgdzie żądanie jest zawsze jednym pakietem, a wszystko jest bezstanowe. Osobiście uważam to za hackerskie wtargnięcie obaw warstwy aplikacji do warstwy sieciowej, gdy połączenie DNS i odpowiednich mechanizmów równoważenia obciążenia prawie zawsze będzie lepszym rozwiązaniem.

kagenut
źródło
+1 za wzmiankę o jednym pakiecie i bezpaństwowości
nponeccop
3
Problem z DNS polega na tym, że można użyć google lub innego zdalnego resolvera, a najbliższy serwer może być inny niż użytkownik. Oczywiście jest to poprawne tylko anycast jest przeznaczony do użytku innego niż DNS (np. Anycast tcp lub inne użycie).
akostadinov
@cagenut, czy HTTP przestałby działać w przypadku równoważenia obciążenia na pakiet (z powodu parzystości lub innej wagi)?
Pacerier
16

Używany głównie do usług opartych na UDP, takich jak DNS. Zasadniczo ogłaszasz tę samą trasę z wielu centrów danych na całym świecie. W ten sposób klienci zostaną wysłani do „najlepszego” i „najbliższego” centrum danych w oparciu o trasy BGP. W cudzysłowie umieszczam słowa „najlepszy” i „najbliższy”, ponieważ dostawcy sieci mogą inaczej grać w gry i kierować ruchem z niektórych sieci. Ogólnie rzecz biorąc, wszystko działa dobrze z anycast, ale nie jest to gwarancją.

Przykładem może być lista serwerów DNS jako 1.2.3.4 i 1.2.3.5. Twoje routery ogłosiłyby trasę dla 1.2.3 / 24 z wielu centrów danych. Jeśli jesteś w Japonii i masz tam centrum danych, istnieje prawdopodobieństwo, że tam znajdziesz. Jeśli jesteś w USA, zostaniesz wysłany do centrum danych w USA. Ponownie opiera się na routingu BGP, a nie na faktycznym routingu geograficznym, ale zwykle tak się psuje.

diq
źródło
1
Jak zatem uniknąć konfliktów?
Pacerier
Nie jestem pewien, co masz na myśli przez konflikty. BGP tak naprawdę nie pozwala na konflikty. Po prostu wybiera trasę. Jeden (często ignorowany) problem z anycastem jest legalny. Technicznie anycasting jest objęty różnymi patentami. Nikt tego nie wymusza, ale różne typy ruchu (CDN, DNS, TCP vs UDP) są objęte różnymi patentami. Ten ustęp powinien być objęty IANAL.
diq
Masz na myśli, że te usługi ip2location są niedokładne? Ponieważ nie ma oficjalnej lokalizacji adresu IP i może być w dowolnym miejscu, w zależności od tego, z którym komputerem BGP rozmawiasz?
Pacerier
9

Zgodnie z moją pierwotną odpowiedzią, właśnie opublikowałem dwa kolejne artykuły na moim blogu: Anycast DNS - część 3, Korzystanie z RIP i Anycast DNS - część 3, Korzystanie z RIP (ciąg dalszy). Ten ostatni zawiera więcej szczegółów, ale na stronie www.netlinxinc.com/netlinx-blog.html znajdziesz aktualne przepisy dotyczące konfiguracji routerów Cisco i opartego na hoście oprogramowania Open Source Quagga dla Anycast DNS przy użyciu protokołu RIP.

Obecnie pracuję nad napisaniem czwartego artykułu z serii. Zapewni to przepisy dotyczące wdrażania usługi Anycast DNS przy użyciu protokołu OSPF. Na koniec serii pokażę przepisy na wdrażanie Anycast DNS przy użyciu BGP.

Anycast DNS - część 1, przegląd

Anycast DNS - część 2, przy użyciu tras statycznych

Anycast DNS - Część 3, Korzystanie z RIP

Anycast DNS - Część 3, Korzystanie z RIP (ciąg dalszy)

netlinxman
źródło
Czy to prawda, że ​​z powodu anycastu możliwe jest, że ktoś inny w Internecie na całym świecie może mieć takie samo publiczne IP, jak ten, który dał ci dostawca usług internetowych?
Pacerier
Czy nie jest prawdą, że tylko dostawcy usług internetowych są w stanie wdrożyć serwery anycast?
Pacerier
W rzeczywistości musisz mieć wielu dostawców usług internetowych, aby wykonać anycast.
Pacerier
4

Biorąc pod uwagę, że w tej chwili jest to głównie DNS ...

Nieformalnie sprawia, że ​​twoja usługa jest bardziej odporna i ma lepszy dostęp do sieci / opóźnienie / szybkość, umożliwiając skonfigurowanie tej samej usługi w wielu lokalizacjach na całym świecie za pomocą tego samego adresu. Gdy ktoś pyta o ten adres, podaje najbliższą / najlepszą trasę.

Z perspektywy serwera:

Jeśli emisja pojedyncza jest skierowana do jednej osoby, a transmisja grupowa do kilku osób, a transmisja skierowana jest do wszystkich ludzi, to anycast jest schitzofreniczny i ma wiele osobowości, w których osobowość najlepiej dopasowana do każdej osoby łączy się z nimi. Hmm Nie najlepsza analogia.

Alex
źródło
3

Naprawdę interesującym zastosowaniem anycast jest DNS. Możesz umieścić 5 różnych serwerów DNS w różnych lokalizacjach fizycznych i sieciowych, ale współużytkować jeden (lub czasem zarówno główny, jak i dodatkowy adres DNS). W zależności od tego, gdzie znajduje się źródło, są one kierowane do ich najbliższego węzła. Zapewnia to równoważenie ruchu oraz zapewnia redundancję w przypadku śmierci serwera DNS.

deksedryna
źródło
Ale czy system DNS nie zapewnia już redundancji?
Pacerier
2

Według jednego z moich kolegów jest również przydatny jako technika ograniczania ataków DoS, ponieważ ludzie mogą atakować tylko „najbliższy” anycastowy adres IP, więc jeśli jest dużo zombie w, powiedzmy, w USA, twoja strona Euro byłaby w większości bez wpływu, ponieważ w rzeczywistości nie mogą wysyłać do niego pakietów.

Może być również możliwe użycie go jako sposobu (nieco naiwnego) filtrowania sfałszowanych pakietów, jeśli oczywiście pochodzą one z miejsca, w którym prawdopodobnie nie będzie reklamowane w BGP jako poprawna trasa (np. Pakiety przychodzące do Europy, gdy ASN wskazuje na Amerykę Północną blok).

MarkR
źródło
1
Cóż, nawet w prostym przypadku, który zatrzymałby tylko ludzi, których ścieżka AS idzie do tego serwera --- np. Możesz zatrzymać ludzi, którzy docierają do ciebie z Comcast, ale nie AT&T. Jeśli masz skonfigurowane „poprawnie” do przełączania awaryjnego (śledź usługę L7, przestań ogłaszać, kiedy przestanie działać), to w rzeczywistości jest znacznie trudniej poradzić sobie z atakami DoS, ponieważ będzie nuke jeden serwer, a następnie przejdzie na następny, gdy będzie ogłoszenia są usuwane ...
James Cape
@JamesCape, ciekawe, ale kiedy przechodzą do następnego, dos nie działa, ponieważ ludzie nie są w stanie się połączyć, prawda?
Pacerier
@Pacerier W najprostszym przypadku, gdy po prostu reklamujesz wszędzie to samo IP bez inteligencji, tak. Jeśli jednak spróbujesz być sprytny i wycofać reklamę w USA, ponieważ usługa nie odpowiada, jedyną pozostałą reklamą będzie ta w Europie. Więc wszystkie amerykańskie zombie trafią na następny dostępny serwer i również go zabiją.
James Cape
2

Warto również zauważyć, że Anycast nie jest dobry ani niezawodny w przypadku niektórych połączeń TCP, które nie mogą przetrwać resetu ani długiej rozmowy.

Anycast IP, używając BGP, informują internet, że istnieją 2, 3 lub więcej ścieżek do konkretnego HOSTA , jednak w rzeczywistości NIE są to ten sam host , są to dokładne repliki hostów reklamowanych w wielu centrach danych w celu uzyskania połączeń o niższych opóźnieniach.

Na przykład mam 3 serwery dokonujące przekierowania 301 poza www dla 198.251.86.133, jeśli pingujesz tego hosta, możesz czasami uzyskać DUPLIKATNE odpowiedzi, a nawet spada w zależności od tego, gdzie się znajdujesz, ponieważ moje serwery to US-East, US -Zachód i EUR. w przypadku połączeń o krótkim czasie (takich jak 301, które są buforowane w przeglądarce) daje to szybką odpowiedź lokalnego serwera w najbliższym centrum danych.

Z punktu widzenia redundancji nie ma wbudowanej anycast, nadal potrzebujesz niezależnej redundancji w każdej lokacji, ponieważ ten adres IP (w typowych scenariuszach) zawsze wskazuje na te centra danych.

Jacob Evans
źródło
Re „ping”; nie pinguje połączenia UDP?
Pacerier
Re „ponieważ ten adres IP (w typowych scenariuszach) zawsze wskazuje na te centra danych”; Jesteś pewny? Jeśli ten serwer przestanie działać, zaczną wskazywać na najbliższy najbliższy serwer, prawda?
Pacerier