Anycast
Anycast — техника раздачи одного и того же IP-адреса из множества физических точек. Роутинг BGP отправит клиента к ближайшему экземпляру (в терминах BGP-метрик). Ключевая технология CDN, публичных DNS-резолверов (1.1.1.1, 8.8.8.8) и защиты от DDoS.
Четыре модели адресации
| Модель | Один-к-... | Пример |
|---|---|---|
| Unicast | Одному конкретному хосту | Обычный веб-сервер |
| Multicast | Группе (все члены) | Multicast IPTV, mDNS |
| Broadcast | Всем в подсети | ARP |
| Anycast | Одному из группы (ближайшему) | 1.1.1.1, 8.8.8.8, все CDN |
Как реализуется
- Оператор владеет IP-блоком, например
1.1.1.0/24. - Ставит серверы в 300 датацентрах по миру.
- Из каждого анонсирует один и тот же префикс в BGP.
- Каждый ISP видит несколько путей к
1.1.1.0/24, выбирает лучший по BGP-метрикам (обычно короткий AS-PATH). - Пользователь автоматически попадает в ближайший (в терминах BGP) сервер.
Важно: «ближайший» не значит географически. BGP-метрики — это AS-hop count, локальные preferences, MED. Иногда трафик из Владивостока идёт в Ашбёрн вместо Токио — потому что аплинки так настроены.
Какая проблема с сессионностью
TCP-сессия должна идти на один и тот же сервер. Если BGP-путь изменится посреди сессии — новый пакет пойдёт в другой anycast-node, у которого нет истории сессии → TCP RST.
На практике редко случается: BGP стабилен на порядки минут-часов. Но у больших CDN есть защита — consistent hashing внутри anycast-сети, или общий state (BGP Session Recovery, sticky-ECMP).
Где anycast работает лучше всего
- DNS (UDP). Одиночные запросы, без сессии. Идеально.
- NTP — то же самое.
- DDoS-абсорбция. Атака размазывается между 300 датацентров.
- CDN. Статика, короткие запросы.
- QUIC. Имеет Connection ID, независимый от IP — переживает смену пути.
Где anycast сложнее
- Долгие TCP-сессии (WebSocket, стриминг) — риск rebalance.
- Stateful-приложения — нужна синхронизация состояния между нодами.
Знаменитые anycast-адреса
| IP | Оператор | Сервис |
|---|---|---|
| 1.1.1.1 | Cloudflare | DNS |
| 1.0.0.1 | Cloudflare | DNS |
| 8.8.8.8 / 8.8.4.4 | DNS | |
| 9.9.9.9 | Quad9 | DNS с фильтрами |
| 77.88.8.8 | Яндекс | DNS |
| 194.190.190.190 | ЯндексDNS Family | DNS |
| ROOT DNS a-m.root-servers.net | ICANN и партнёры | 13 root DNS, каждый anycast из десятков мест |
Как проверить что перед тобой anycast
- Ping из разных стран показывает разные ощутимые RTT (5 мс из Европы, 10 мс из США, вместо десятков мс к одной точке).
- Traceroute показывает разные предпоследние хопы.
- DNS-запрос
dig +short @1.1.1.1 hostname.bind CH TXTвернёт локальную ноду.