все-таки ярость доказывающих, что BIND гавно заставляет задуматься.
Эти думки спровоцировали гугление, в результате которого у меня сложилась картина, что BIND реально испытывает трудности именно в качестве кеширующего сервера ДНС.
Вообще-то товарищ пошутить попытался, но сам того не ожидая, сказал правду. Многие провайдеры хорошо знают на собственной шкуре недостатки BIND 9 как кэширующего рекурсивного DNS.
При нехватке памяти BIND запускает процедуру поиска устаревших записей. В этот момент он практически перестаёт отвечать на запросы. Разработчики BIND пытались прикрутить патч а-ля "не искать для удаления более 1000 записей и не запускать процедуру очистки чаще 10 секунд", это слегка облегчило ситуацию, но не сильно.
Теперь что касается Корневых серверов. Тут не все так просто. Там какие-то разделения нагрузки:
По сути корни занимаются очень простой задачей. У них есть одна (не очень большая) зона, поэтому памяти на хранение информации зоны им много не надо. Основная память расходуется на запоминание ещё не обслуженных клиентов. После обслужывания вся информация о клиенте со свистом вылетает, фигурально выражаясь, в /dev/null. Процессор по сути занимается поиском информации в памяти и обслуживанием сетевой подсистемы - особо сложной нагрузки на него тоже не приходится.
Корневых DNS-серверов не 13, как говорят легенды. У корневых DNS-серверов 13 IP-адресов - это правда, самих же корневиков до пи..ды. В России расположены два узла двух разных unicast-кластеров: в Москве и Новосибирске. В результате нагрузка не хило распределяется по узлам.
Кэширующий рекурсор требует много памяти во-первых на хранение кэша, во-вторых на хранение информации о ещё необслуженных клиентах. Кэш содержит информацию не из одной небольшой зоны, а из тысяч разных зон, и не порядка сотни записей, а несколько десятков-сотен тысяч записей, поэтому кэш занимает больше памяти, нежели на корневиках. Поскольку выполнение рекурсивного запроса ограничено не скоростью поиска в памяти, а временем получения ответа от другого DNS-сервера, выполнение запроса может затянуться довольно надолго. Не мудрено, что вторая таблица тоже имеет довольно большой размер. Один сервер в провайдерской сети может обслуживать сеть размером x.x.x.x/16 - не хило...
А теперь подумайте, нагрузка на какой из типов серверов сложнее. В первом случае нагрузка очень простая и легко распараллеливается, всё, что требуется от DNS-сервера - это быстро найти в своей памяти нужный ответ. Фактически его производительность больше определяется пропускной способностью канала связи. Во втором случае, распараллелить нугрузку можно, но тогда теряется эффективность кэширования. Нагрузка на кэширующий рекурсивный DNS-сервер более сложная, она грузит разные подсистемы - сеть, память, процессор.
То есть как бы в качестве авторитетных серверов BIND использовать - не вопрос.
А вот когда дело доходит до кеширования, то при возрастании нагрузки BIND выпадает в осадок.
На текущий момент интересен опыт/статистика использования кеширующих ДНС серверов под большой нагрузкой.
Есть ли кто такой статистикой обладает?