Компьютерные сети

Anycast

Как один IP-адрес может существовать в 300 городах одновременно? Anycast нарушает интуицию об уникальности адресов - и это работает. 1.1.1.1 отвечает из Токио для японцев и из Лондона для европейцев.

  • **Cloudflare 1.1.1.1** - anycast DNS в 300+ городах, один из самых быстрых публичных DNS
  • **Корневые DNS-серверы** - 13 логических серверов, ~1500 физических благодаря anycast
  • **AWS Route 53** - anycast DNS с latency-based routing для глобальных приложений

Предварительные знания

  • BGP: The Glue of the Internet
  • CDN: Content Closer to the User

Unicast, Broadcast, Multicast, Anycast

В IP-сетях есть несколько способов адресации: **Unicast** (один к одному), **Broadcast** (один ко всем), **Multicast** (один к группе) и **Anycast** (один к ближайшему). Anycast - когда один IP-адрес анонсируется из нескольких мест, а BGP направляет пакеты к ближайшему.

**Anycast** работает благодаря BGP: несколько серверов анонсируют один и тот же IP-префикс. Маршрутизаторы интернета выбирают кратчайший путь - пакеты идут к ближайшему серверу.

Ключевое свойство anycast: **stateless протоколы** работают идеально (DNS, NTP), но **stateful** (TCP) требуют осторожности - если маршрут изменится посреди соединения, пакеты пойдут на другой сервер и соединение разорвётся.

Почему anycast хорошо работает для DNS, но проблематичен для HTTP?

Как BGP выбирает ближайший сервер

BGP использует несколько метрик для выбора пути: **AS path length** (сколько автономных систем пройти), **MED** (Multi-Exit Discriminator), **local preference**. Anycast работает благодаря тому, что BGP выбирает путь с минимальным AS path - обычно это географически ближайший сервер.

**Convergence time** - время, за которое BGP перенастраивает маршруты при изменениях. Может занять секунды или минуты. В это время anycast может работать нестабильно.

CDN-провайдеры размещают серверы в **точках обмена трафиком (IXP)** - там, где пересекаются сети многих провайдеров. Это минимизирует AS path до пользователей и улучшает anycast routing.

Почему CDN-провайдеры размещают серверы в IXP?

DNS и Anycast: идеальная пара

**DNS** - идеальный use case для anycast. Запрос-ответ по UDP, нет состояния. Все 13 корневых DNS-серверов используют anycast. `1.1.1.1` (Cloudflare) и `8.8.8.8` (Google) - anycast-адреса, работающие в сотнях точек мира.

**Почему 13 корневых серверов?** Ограничение UDP пакета: DNS-ответ с 13 адресами (IPv4) помещается в 512 байт. С EDNS0 можно больше, но 13 исторически закрепились.

Anycast DNS обеспечивает: **низкую latency** (ответ от ближайшего сервера), **высокую доступность** (падение сервера → трафик уходит на другой), **DDoS protection** (атака распределяется по всем точкам).

Что происходит, если anycast DNS-сервер падает?

Anycast для CDN и TCP

CDN используют anycast для HTTP/HTTPS несмотря на TCP. Как? **Stable BGP routing** - маршруты редко меняются, TCP-соединения живут. Если маршрут изменится - клиент просто переподключится (браузер делает это автоматически).

**QUIC (HTTP/3)** использует Connection ID вместо IP:port для идентификации соединения. Если anycast-маршрут изменится, соединение мигрирует на новый сервер без разрыва.

**DDoS protection** - главное преимущество anycast для CDN. Атака на один IP распределяется по всем edge-серверам автоматически. Атакующий не может перегрузить один сервер.

Anycast нельзя использовать для TCP-соединений

Anycast активно используется для HTTP/HTTPS. BGP обычно стабилен, а редкие разрывы TCP переносятся легко

CDN-гиганты (Cloudflare, Fastly, AWS) используют anycast для HTTP годами. TCP-соединения редко рвутся от смены маршрута. Браузеры автоматически переподключаются. HTTP/3 (QUIC) решает проблему полностью с connection migration.

Почему HTTP/3 (QUIC) лучше подходит для anycast, чем TCP?

Итоги

  • **Anycast** - один IP анонсируется из множества мест, BGP направляет к ближайшему. Идеально для DNS (stateless UDP)
  • **BGP routing** - выбирает путь по AS path length, local preference, MED. IXP обеспечивают минимальные хопы
  • **CDN + Anycast** - работает для HTTP/TCP благодаря стабильности BGP. QUIC решает проблему connection migration

Связанные темы

Anycast опирается на знание BGP и применяется в CDN:

  • BGP — Anycast работает благодаря BGP path selection
  • CDN — CDN используют anycast для глобальной доставки контента

Вопросы для размышления

  • Почему anycast отлично подходит для DDoS protection?
  • Что случится с TCP-соединением, если BGP-маршрут изменится во время передачи данных?
  • Почему корневых DNS-серверов ровно 13 (буквы A-M)?

Связанные уроки

  • ds-20-lru-cache
Anycast

0

1

Войти