Скрытая цена «бесплатного» DNS: почему ваш резолвер задает лишние вопросы
Бесплатный DNS — это иллюзия: почему резолверы засыпают вас запросами
Слышали поговорку про бесплатный сыр? В DNS она работает буквально. Только платит не тот, кто пользуется, а тот, кто обслуживает.
Трагедия общих ресурсов в мире DNS
Принцип «трагедии общих ресурсов» знаком многим: когда пользователи не несут прямых затрат, они используют ресурс без ограничений. Пастбище, которое принадлежит всем — быстро станет пустыней.
DNS устроен точно так же. Когда резолверу нужно разрешить доменное имя, он отправляет UDP-запросы авторитативным серверам. UDP быстрый и легкий, но без гарантий доставки. И вот тут начинается самое интересное.
Почему резолверы повторяют одни и те же запросы
Резолверы взяли на вооружение стратегию, которая выглядит умно только с их стороны: они отправляют запросы повторно. Получил таймаут? Не проблема — шлем снова. И ещё раз. Иногда десяток пакетов летит раньше, чем первый запрос вообще успел «умереть».
Причины простые:
- Устойчивость — если первый пакет потерялся, быстрый повтор может сработать
- Скорость — ждать таймаут долго, а быстрые ретраи дают мгновенный результат
Резолвер выигрывает время. А вот счёт за все эти дубликаты приходит авторитативному серверу. И платить за чужие ретраи никто не заставляет — запросы бесплатные, вот и шлют сколько хотят.
Классический пример внешнего эффекта: платит тот, кто не принимает решений.
Цифры впечатляют
Исследование APNIC Labs изучало дублирование запросов в разных регионах. Методология хитрая: через веб-рекламу раздавали задачи с уникальными DNS-именами, чтобы кэширование не мешало. Получилась чистая картина того, что реально прилетает на авторитативные серверы.
Средний уровень дублирования — 38%. Каждый третий запрос — копия. Но это в среднем.
По регионам картина сильно отличается:
| Регион | Дублирование | |--------|-------------| | Индийский субконтинент | 61% | | Китай / Гонконг | 47% | | Северная Америка | 28% | | Европа | 27% |
Индия и Китай показывают в два раза больше дублей, чем Америка и Европа. Либо софт там работает агрессивнее, либо сети хуже — или и то, и другое вместе.
Что это значит для вас
Если вы держите авторитативные NS для своих доменов или предоставляете DNS-услуги, вы обрабатываете куда больше запросов, чем нужно. Последствия конкретные:
- Лишний трафик = лишние деньги за bandwidth
- Нагрузка на серверы растёт без причины
- Каналы связи изнашиваются быстрее
Для растущего бизнеса это выливается в реальные расходы. Каждый ненужный запрос — это ресурс, который мог бы обслуживать реальных пользователей.
Что с этим делать разработчику
Мы привыкли, что DNS — это магия: вызвал getaddrinfo(), получил результат. Но понимать механику полезно, особенно если вы:
- Ищите причину DNS-таймаутов — эти загадочные задержки могут быть ретраями резолвера
- Проектируете DNS-heavy приложения — зная реальный объём, проще планировать ёмкость
- Выбираете DNS-провайдера — качество реализации сильно отличается
В NameOcean мы это видим постоянно, когда помогаем клиентам оптимизировать инфраструктуру. Понимание того, что DNS не бесплатен, объясняет, почему грамотная реализация — с умными ретраями, правильным кэшированием и минимумом мусора — реально влияет на надёжность вашего сервиса.
Есть ли выход?
Корень проблемы — отсутствие обратной связи по стоимости. Резолверы могут слать запросы безнаказанно. Варианты решения:
- Умные резолверы — продвинутая логика ретраев и более длинные начальные таймауты
- Anycast — сокращает задержки и потери пакетов, резолверу меньше хочется ретраить
- EDNS0 buffer size — оптимизация уменьшает фрагментацию и связанные с ней потери
- TCP fallback — для проблемных запросов, но это уже оверхед
Для большинства вывод проще: выбирайте DNS-провайдера осознанно. Не всё инфраструктура одинакова. Понимание скрытых затрат «бесплатных» запросов помогает принимать решения, которые сэкономят и нервы, и бюджет.
DNS — общий ресурс интернета. И как любой общий ресурс, он работает лучше, когда все играют по правилам — даже когда нарушение ничего не стоит.
Хотите обсудить оптимизацию вашего DNS? Мы всегда на связи. В NameOcean мы верим в прозрачную инфраструктуру, которая работает эффективно — не только на уровне приложений, но и на уровне пакетов.