Что такое «Anycast» и как это полезно?

85

Я никогда не слышал о anycast, пока несколько секунд назад не прочитал « Какие крутые или полезные трюки с сервером / сетью? ».

Статья в " Anycast " из Википедии довольно формальна и на самом деле не дает мысленного представления о том, как она будет использоваться.

Может ли кто-нибудь объяснить в нескольких неформальных предложениях, что такое «anycast», как вы его настраиваете (просто в общем смысле) и каковы его преимущества (что делает его проще)?

имя пользователя
источник

Ответы:

88

Anycast - это сетевой метод, в котором один и тот же IP-префикс объявляется из разных мест. Затем сеть решает, в какое место направить запрос пользователя, исходя из стоимости протокола маршрутизации и, возможно, «работоспособности» рекламных серверов.

У anycast есть несколько преимуществ. Во-первых, в устойчивом состоянии пользователи службы anycast (отличный пример DNS) всегда будут подключаться к «ближайшему» (с точки зрения протокола маршрутизации) DNS-серверу. Это уменьшает задержку, а также обеспечивает уровень балансировки нагрузки (при условии, что ваши потребители равномерно распределены по вашей сети).

Еще одним преимуществом является простота управления конфигурацией. Вместо того чтобы настраивать разные DNS-серверы в зависимости от того, где развернут сервер / рабочая станция (Азия, Америка, Европа), у вас есть один IP-адрес, который настраивается в каждом местоположении.

В зависимости от того, как реализован anycast, он также может обеспечить высокий уровень доступности. Если объявление маршрута anycast обусловлено некоторой проверкой работоспособности (например, запросом DNS для хорошо известного домена в этом примере), то, как только сервер потерпит неудачу, его маршрут может быть удален. Как только сеть повторно соединится, пользовательские запросы будут беспрепятственно перенаправлены на следующий ближайший экземпляр DNS без необходимости какого-либо ручного вмешательства или перенастройки.

Конечным преимуществом является горизонтальное масштабирование; если вы обнаружите, что один сервер перегружен, просто разверните другой в месте, которое позволит ему принимать некоторую долю запросов перегруженного сервера. Опять же, поскольку не требуется настройка клиента, это можно сделать очень быстро.

Мурали Суриар
источник
Использует ли anycast большую пропускную способность по сравнению с одноадресной? Представьте, что у нас есть тысяча серверов, использующих один и тот же IP-адрес. Когда мы отправляем пакет по этому адресу, не будет ли он занимать большую полосу пропускания, чем одноадресная?
Pacerier
5
Нет - трафик, отправленный на произвольный адрес, будет поступать только в одно место с рекламой адреса. Возможно, вы думаете о многоадресной рассылке , когда пакеты, отправленные на адрес группы многоадресной рассылки, отправляются всем хостам, заинтересованным в этой группе.
Мурали Суриар
Разве проблема « Вместо того, чтобы настраивать разные DNS-серверы в зависимости от того, где развернут сервер / рабочая станция », не решается доменными именами? Так какой смысл anycast, когда он просто дублирует то, что доменные имена уже делают?
Pacerier
1
@Pacerier - вы не можете использовать доменные имена для поиска вашего DNS-сервера - это круговая зависимость. Пример: настроить dns.foo.com. как ваш DNS-сервер. На какой IP-адрес я отправляю запросы dns.foo.com? Я знаю, я посмотрю это в DNS. и т. д.
Мурали Суриар
32

Одна из вещей, которая часто смущала меня в понимании «anycast», заключается в том, что, хотя это термин высокого уровня, в практической реализации он обычно сводится к двум примерам:

  1. Маршрутизаторы, использующие BGP для объявления одного и того же IP-блока через несколько путей AS, являются грубым способом направления пользователей на «более близкий» сайт. В то же время он обеспечивает почти прозрачное переключение на другие сайты, просто убирая маршруты из проблемного сайта. Это может быть полезно практически для любого протокола, хотя, очевидно, он вызывает много проблем с синхронизацией данных на сервере.

  2. Рекламируйте один и тот же сервисный IP из нескольких точек в вашей собственной сети (через статическую маршрутизацию , OSPF , EIGRP или что-то еще). Если маршруты взвешены по- разному, это действует как механизм отработки отказа. Если маршруты взвешены равномерно, он может использовать преимущества балансировки нагрузки для каждого пакета или потока для большинства маршрутизаторов известных производителей. Вы должны быть осторожны, чтобы протокол прикладного уровня удобен для этого, поэтому вы почти всегда слышите о его использовании с DNSгде запрос всегда один пакет и все без сохранения состояния. Лично я рассматриваю это как хакерское вторжение проблем прикладного уровня в сетевой уровень, когда комбинация DNS и правильных балансировщиков нагрузки почти всегда будет лучшим решением.

cagenut
источник
+1 за упоминание одного пакета и безгражданства
nponeccop
3
Проблема с DNS заключается в том, что можно использовать Google или другой удаленный распознаватель, а ближайший сервер для распознавателя может отличаться от пользователя. Конечно, это действительно только для anycast, не для использования DNS (например, tcp anycast или другое использование).
Акостадинов
@cagenut, HTTP сломался бы в случае балансировки нагрузки на пакет (из-за четных весов или иным образом)?
Пейсер
16

В основном используется для служб на основе UDP, таких как DNS. По сути, вы объявляете один и тот же маршрут из нескольких центров обработки данных по всему миру. Таким образом, ваши клиенты будут отправлены в «лучший» и «ближайший» центры обработки данных на основе маршрутов BGP. Я поместил «лучшие» и «самые близкие» в кавычки, потому что сетевые провайдеры могут по-разному играть в игры и маршрутизировать трафик из определенных сетей. Как правило, с anycast все получается лучше, но это не гарантия.

Примером этого может быть перечисление ваших DNS-серверов как 1.2.3.4 и 1.2.3.5. Ваши маршрутизаторы объявят маршрут для 1.2.3 / 24 из нескольких центров обработки данных. Если вы находитесь в Японии и там есть центр обработки данных, скорее всего, вы окажетесь там. Если вы находитесь в США, вас отправят в центр обработки данных в США. Опять же, это основано на маршрутизации BGP, а не на фактической географической маршрутизации, но обычно это происходит так.

ВИК
источник
1
Как избежать конфликтов?
Pacerier
Я не уверен, что вы подразумеваете под конфликтами. BGP не допускает конфликтов. Он просто выбирает маршрут. Одна (часто игнорируемая) проблема с anycast является законной. Технически, anycasting защищен различными патентами. Никто не применяет это, но различные типы трафика (CDN, DNS, TCP против UDP) защищены различными патентами. Этот параграф должен быть покрыт IANAL.
ВИК
То есть вы имеете в виду, что эти сервисы ip2location неточны? Потому что нет никакого официального местоположения для IP, и оно может быть где угодно, в зависимости от того, с каким BGP-компьютером вы разговариваете?
Pacerier
9

В соответствии с моим первоначальным ответом я только что опубликовал еще две статьи в своем блоге под названием: Anycast DNS - часть 3, использование RIP и Anycast DNS - часть 3, использование RIP (продолжение). Последнее более детально, но на сайте www.netlinxinc.com/netlinx-blog.html вы найдете реальные рецепты по настройке маршрутизаторов Cisco и программного обеспечения для маршрутизации на основе хоста с открытым исходным кодом Quagga для Anycast DNS с использованием RIP.

В настоящее время я работаю над написанием четвертой статьи в серии. Это даст информацию о том, как развернуть Anycast DNS с использованием OSPF. Последним в этой серии я покажу рецепты развертывания Anycast DNS с использованием BGP.

Anycast DNS - часть 1, обзор

Anycast DNS - часть 2, использование статических маршрутов

Anycast DNS - Часть 3, Использование RIP

Anycast DNS - Часть 3, Использование RIP (продолжение)

netlinxman
источник
Так правда ли, что из-за anycast возможно, что кто-то еще в Интернете по всему миру может иметь тот же общедоступный IP-адрес, что и ваш провайдер?
Pacerier
Разве не правда, что только интернет-провайдеры способны развертывать серверы anycast?
Pacerier
На самом деле, вам нужно иметь несколько интернет-провайдеров, чтобы сделать anycast.
Pacerier
4

Учитывая, что это в основном DNS на данный момент ...

Неформально это делает вашу службу более устойчивой и обеспечивает лучший доступ к сети / задержку / скорость, позволяя вам настроить одну и ту же службу в нескольких местах по всему миру, используя один и тот же адрес. Когда кто-то запрашивает этот адрес, ему предоставляется ближайший / лучший маршрут.

С точки зрения сервера:

Если одноадресная передача - это то, что вы делаете с одним человеком, а многоадресная передача - с несколькими, а трансляция - это то, что вы делаете для всех людей, тогда анкаст является шизофреником и имеет несколько личностей, где личность, наиболее подходящая для каждого человека, связана с ними. Хм. Не самая лучшая аналогия.

Alex
источник
3

Действительно интересное использование anycast - DNS. Вы можете разместить 5 разных DNS-серверов в разных физических и сетевых расположениях, но использовать один (а иногда и первичный, и вторичный DNS) адреса. В зависимости от того, где находится источник, они направляются к ближайшему узлу. Это обеспечивает некоторую балансировку трафика и обеспечивает избыточность в случае смерти DNS-сервера.

Dexedrine
источник
Но не обеспечена ли избыточность системой DNS?
Pacerier
2

По словам одного из моих коллег, это также полезно в качестве метода смягчения атаки DoS, поскольку люди могут атаковать только «ближайший» anycast IP-адрес, поэтому, если в США, например, в США много зомби, ваш сайт в Европе будет в основном незатронутый, поскольку они фактически не могут посылать ему пакеты.

Также может быть возможно использовать его как способ (несколько наивно) фильтровать поддельные пакеты, если они явно поступают откуда-то, и вряд ли будут объявлены в BGP как правильный маршрут (например, пакеты, поступающие в Европу, когда ASN указывает на N American) блок).

MarkR
источник
1
Что ж, даже в простом случае это остановит только тех людей, у которых путь AS идет к этому серверу - например, вы можете остановить людей, которые связываются с вами из Comcast, но не AT & T. Если вы настроили его «должным образом» для переключения при отказе (отследите службу L7, прекратите объявлять, когда она выйдет из строя), то на самом деле обрабатывать DoS-атаки намного сложнее, так как она взорвет один сервер, а затем перейдет на другой, когда объявления сняты ...
Джеймс Кейп
@JamesCape, Интересно, но когда они переходят к следующему, дос не удалось, так как люди не могут подключиться правильно?
Pacerier
@Pacerier В простейшем случае, когда вы просто рекламируете один и тот же IP-адрес везде без какой-либо информации, да. Однако, если вы попытаетесь стать умным и отозвать рекламу в США, потому что служба не отвечает, то единственной оставшейся рекламой будет реклама в Европе. Таким образом, все американские зомби попадут на следующий доступный сервер и тоже его убьют.
Джеймс Кейп
2

Также полезно отметить, что Anycast не подходит и не надежен для некоторых TCP-соединений, которые не могут пережить перезагрузки или длительный разговор.

Anycast IP, использующие BGP, сообщают Интернету, что существует 2, 3 или более путей к конкретному HOST , однако на самом деле это НЕ один и тот же хост , а точные копии хостов, объявленных в нескольких центрах обработки данных для достижения соединений с более низкой задержкой.

Например, у меня есть 3 сервера, которые выполняют 301 переадресацию без www для 198.251.86.133, если вы пропингуете этот хост, вы можете время от времени получать ответы DUPLICATE или даже отбрасывать их в зависимости от того, где вы находитесь, так как мои серверы находятся в США, на востоке США. -Запад и евро. для соединений с коротким временем (например, 301, которые являются кешем браузера) это дает быстрый ответ локального сервера в ближайшем центре обработки данных.

С точки зрения избыточности в Anycast нет встроенных, вам все равно потребуется независимая избыточность на каждом сайте, так как этот IP (в типичных сценариях) всегда будет указывать на эти центры данных.

Джейкоб Эванс
источник
Re "пинг"; не пропингует соединение UDP?
Pacerier
«Как этот IP (в типичных сценариях) всегда будет указывать на эти центры обработки данных»; Ты уверен? Если этот сервер отключится, они начнут указывать на следующий ближайший сервер, не так ли?
Pacerier