Введение
Методология адресации и маршрутизации Anycast — это методология адресации и маршрутизации сети, при которой один IP-адрес используется несколькими устройствами (обычно серверами), расположенными в разных местах. Маршрутизаторы направляют пакеты, адресованные этому адресу назначения, в ближайшее к отправителю местоположение, используя стандартные алгоритмы принятия решений, как правило, с наименьшим количеством BGP-переходов. Anycast-маршрутизация широко используется сетями доставки контента, такими как веб-серверы и DNS-серверы, для приближения контента к конечным пользователям.
Anycast is a network addressing and routing methodology in which a single IP address is shared by devices (generally servers) in multiple locations. Routers direct packets addressed to this destination to the location nearest the sender, using their normal decision making algorithms, typically the lowest number of BGP network hops. Anycast routing is widely used by content delivery networks such as web and name servers, to bring their content closer to end users.
История
Первое задокументированное использование маршрутизации anycast для топологического балансирования нагрузки интернет-сервисов произошло в 1989 году; эта техника была впервые формально описана в IETF четыре года спустя. В 2001 году она впервые была применена к критической инфраструктуре с помощью anycast для корневого сервера I. или "менее одного потока на десять тысяч часов". Некоторые протоколы на основе TCP, в частности HTTP, включали механизмы "перенаправления", позволяющие использовать anycast-адреса сервиса для определения ближайшего экземпляра, после чего пользователь перенаправлялся бы на этот конкретный экземпляр перед началом длительной, сохраняющей состояние транзакции.
Интернет-протокол версия 4
Anycast может быть реализован с помощью протокола Border Gateway Protocol (BGP). Несколько хостов (обычно расположенных в разных географических регионах) получают один и тот же униicast IP-адрес, и различные маршруты к этому адресу анонсируются через BGP. Маршрутизаторы рассматривают их как альтернативные маршруты к одному и тому же месту назначения, хотя фактически это маршруты к разным хостам с одним и тем же адресом. Как обычно, маршрутизаторы выбирают маршрут на основе используемой метрики расстояния (минимальная стоимость, наименьшая загруженность, кратчайший путь). В данной конфигурации выбор маршрута фактически означает выбор конкретного хоста-назначения.
Интернет-протокол версия 6
Anycast поддерживается явно в архитектуре IPv6-адресации. Самый низкий адрес в подсети IPv6 (идентификатор интерфейса 0) зарезервирован как anycast-адрес "маршрутизатора подсети". Кроме того, 128 самых высоких идентификаторов интерфейса в подсети также зарезервированы как anycast-адреса. Большинство маршрутизаторов IPv6 на пути пакета anycast по сети не будут отличать его от unicast-пакета, но специальная обработка требуется от маршрутизаторов, находящихся вблизи пункта назначения (то есть в области действия anycast-адреса), поскольку они должны маршрутизировать пакет anycast к "ближайшему" интерфейсу в пределах этой области, имеющему соответствующий anycast-адрес, в соответствии с используемой метрикой расстояния (количество переходов, стоимость и т.п.). Метод, используемый в IPv4 для рекламы нескольких маршрутов в BGP для множественного назначения unicast-адресов, также работает в IPv6 и может использоваться для маршрутизации пакетов к ближайшему из нескольких географически распределенных хостов с одним и тем же адресом. Этот подход, не требующий маршрутизаторов, поддерживающих anycast, имеет те же сценарии использования, а также те же проблемы и ограничения, что и в IPv4.
Приложения
С ростом Интернета сетевые сервисы все чаще предъявляют высокие требования к доступности. В результате, использование anycast стало более популярным среди сетевых операторов.
Система доменных имен
Все корневые серверы имен Интернета реализованы как кластеры хостов с использованием anycast-адресации. Все 13 корневых серверов A–M существуют в нескольких местах, причем 11 из них расположены на нескольких континентах. (Корневые серверы B и H существуют в двух местах на территории США.) Серверы используют объявления anycast-адресов для обеспечения децентрализованного обслуживания. Это ускорило развертывание физических (а не логических) корневых серверов за пределами Соединенных Штатов. Многие коммерческие провайдеры DNS перешли на IP anycast для повышения производительности запросов, обеспечения избыточности и реализации балансировки нагрузки.
Безопасность
Anycast позволяет любому оператору, информация маршрутизации которого принимается промежуточным маршрутизатором, перехватывать любые пакеты, предназначенные для anycast-адреса. Хотя это может показаться небезопасным на первый взгляд, это ничем не отличается от маршрутизации обычных IP-пакетов и не является более или менее безопасным. Как и в случае с обычной маршрутизацией IP, тщательная фильтрация операторов, которым разрешено или запрещено распространять объявления о маршрутах, имеет решающее значение для предотвращения атак типа "человек посередине" или "черная дыра". Первая из этих атак также может быть предотвращена путем шифрования и аутентификации сообщений, например, с использованием протокола Transport Layer Security, а вторая – с помощью анонимной маршрутизации.
Надежность
Anycast обычно отличается высокой надежностью, поскольку обеспечивает автоматическое переключение при отказе без усложнения системы или создания новых потенциальных точек отказа. Приложения Anycast, как правило, оснащены внешней проверкой работоспособности сервера ("heartbeat"), и объявление маршрута отзывается в случае отказа сервера. В некоторых случаях это осуществляется самими серверами, которые объявляют префикс Anycast маршрутизатору через OSPF или другой протокол IGP. Если серверы выходят из строя, маршрутизатор автоматически отзывает объявление. Функция "heartbeat" критически важна, поскольку продолжение объявления маршрута для неисправного сервера приводит к тому, что он начинает действовать как "черная дыра" для ближайших клиентов; это наиболее серьезный тип отказа в системе Anycast. Даже в этом случае такой отказ приведет к полному сбою только для клиентов, находящихся ближе к этому серверу, чем к любому другому, и не вызовет глобального сбоя. Однако даже автоматизация, необходимая для реализации отзыва маршрута на основе "heartbeat", сама по себе может стать потенциальной точкой отказа, как показал сбой Facebook в 2021 году.
Снижение атак типа "отказ в обслуживании"
При атаках типа "отказ в обслуживании" вредоносный сетевой хост может выдавать себя за anycast-сервер для критически важной сетевой службы, чтобы предоставлять ложную информацию или просто блокировать доступ к ней. Методологии Anycast в Интернете могут быть использованы для распределения DDoS-атак и снижения их эффективности: поскольку трафик направляется к ближайшему узлу, процесс, над которым злоумышленник не имеет контроля, поток DDoS-трафика будет распределен между ближайшими узлами. Таким образом, не все узлы могут быть подвержены воздействию. Это может служить основанием для внедрения anycast-адресации. Эффективность данной техники зависит от сохранения конфиденциальности любых unicast-адресов, связанных с узлами anycast-службы, однако, поскольку злоумышленник, располагающий unicast-адресами отдельных узлов, может атаковать их из любой точки, обходя методы anycast-адресации.
Локальные и глобальные узлы
Некоторые развертывания anycast в Интернете различают локальные и глобальные узлы, чтобы принести пользу локальному сообществу, отдавая предпочтение локальным узлам. Примером является система доменных имен (DNS). Локальные узлы часто анонсируются с BGP-сообществом "no-export", чтобы предотвратить их распространение хостами своим пирингам, то есть объявление остаётся в локальной сети. В случаях, когда развернуты как локальные, так и глобальные узлы, к анонсам глобальных узлов часто добавляют AS-path prepending (то есть несколько раз повторяют номер автономной системы), чтобы увеличить длину пути и сделать анонс локального узла предпочтительнее анонса глобального узла.