Anycast — метод адресации и маршрутизации в IP-сетях: группа серверов в разных точках мира использует один и тот же IP-адрес. Интернет-маршрутизаторы направляют трафик к «ближайшему» узлу по метрике BGP (обычно наименьшее количество AS-переходов). Пользователь получает ответ от географически близкого сервера, не зная о существовании остальных. На anycast работает система DNS корневых серверов и большинство крупных CDN.
Как работает anycast
Каждый anycast-узел анонсирует один и тот же IP-префикс через BGP. Маршрутизаторы ISP выбирают путь с наименьшим AS-path к данному префиксу. При отказе одного узла он прекращает BGP-анонс, и в течение нескольких секунд (время сходимости BGP) трафик автоматически перенаправляется к следующему ближайшему узлу. Это обеспечивает высокую доступность без явного failover.
Cloudflare использует anycast для своей сети: более 300 точек присутствия анонсируют одни и те же IP (1.1.1.1, 104.x.x.x). Пользователь в Москве подключается к московскому PoP, а пользователь в Токио — к токийскому, хотя оба делают запрос на одни и те же IP-адреса.
Anycast vs Unicast vs Multicast
| Тип | Получатель | Применение |
|---|---|---|
| Unicast | Один конкретный хост | HTTP, SSH, большинство протоколов |
| Multicast | Группа подписчиков | IPTV, потоковое видео в LAN |
| Anycast | Ближайший из группы | DNS, CDN, DDoS-защита |
| Broadcast | Все в подсети | ARP, DHCP discovery |
Применение anycast
DNS-корневые серверы (13 адресов, A–M) используют anycast с 2002 года: физически их более 1500 по всему миру. Anycast DNS: 1.1.1.1 (Cloudflare), 8.8.8.8 (Google), 9.9.9.9 (Quad9) — anycast-адреса с глобальным охватом. CDN: Cloudflare, Akamai, Fastly строят anycast-сеть для минимизации задержек. DDoS-защита: anycast распределяет flood-трафик между узлами — ни один узел не перегружается полным объёмом атаки.
История
Anycast для DNS предложен в RFC 1546 (1993). Первое масштабное внедрение — anycast для F-корневого DNS-сервера (2002). Cloudflare запустила глобальную anycast-сеть при основании в 2010 году. Anycast DNS-разрешитель 1.1.1.1 запущен 1 апреля 2018 года.
Anycast и UDP: ограничения
Anycast хорошо работает с UDP-протоколами (DNS, NTP) и stateless-HTTP-запросами. Для TCP-сессий anycast проблематичен: если BGP-маршрутизация изменится в середине TCP-сессии (например, при failover узла), сессия разрывается. Поэтому long-lived TCP-соединения (WebSocket, gRPC streaming) не стоит строить поверх anycast. Cloudflare решает проблему через Argo Tunnel: клиентские QUIC-сессии завершаются на anycast edge, а внутри сети используются стабильные TCP-туннели к origin. Для DNS это не проблема — каждый запрос независим, UDP, без состояния.
Anycast DDoS-защита
Anycast-инфраструктура — один из лучших механизмов поглощения DDoS-атак. Cloudflare anycast-сеть (300+ узлов, суммарная ёмкость >100 Тбит/с) поглощает volumetric DDoS: атака 500 Гбит/с распределяется по 300 узлам, каждый обрабатывает ~1,7 Гбит/с — ничто по сравнению с пропускной способностью узла. Akamai Prolexic, Imperva — коммерческие anycast-DDoS-защиты. Для Anti-DDoS хостинга: провайдеры анонсируют IP клиента из своей anycast-сети во время атаки, трафик «тянется» к мощным scrubbing-центрам, очищенный трафик туннелируется к реальному серверу.
Ограничение anycast: нельзя использовать для сессионных TCP-протоколов с долгой жизнью. Для anycast DNS это не проблема (UDP, stateless). Для anycast HTTP (CDN) — работает через QUIC/HTTP3, который поддерживает connection migration при смене маршрута.