Тестирование производительности DNS-серверов Андрей Лескин QratorLabs/HLL
Тестирование производительности
DNS-серверов
Андрей Лескин
QratorLabs/HLL
Что такое DNS?
Что такое DNS?
• Коротко: highloadlab.com 178.248.233.7
Что такое DNS?
• Коротко: highloadlab.com 178.248.233.7
• Длинно: (список неполон)
DNS-серверы
• minidns dns server https://code.google.com/p/minidns/source/browse/minidns “wc -l minidns” 107 (!!!)
DNS-серверы
• minidns dns server https://code.google.com/p/minidns/source/browse/minidns “wc -l minidns” 107 (!!!)
DNS-серверы
• minidns dns server https://code.google.com/p/minidns/source/browse/minidns “wc -l minidns” 107 (!!!)
• Authoritative. There can be only one!
• Caching. The cache is out there...
А что мы хотим?
• Скорость
• Устойчивость
• Производительность
А что мы хотим?
• Скорость
• Устойчивость
• Производительность
QUERIES
SUPER Authoritative
Server
QUERIES
SUPER Caching Server
SLOW Authoritative
Server
А что мы хотим?
• Скорость
• Устойчивость
• Производительность
QUERIES
SUPER Authoritative
Server
QUERIES
SUPER Caching Server
SLOW Authoritative
Server
• Доменов: МАЛО
• Запросов: МНОГО
DNS test. А что уже было сломано до нас?
DNS test. А что уже было сломано до нас?
• dnsperf & resperf?
DNS test. А что уже было сломано до нас?
• dnsperf & resperf? NO
• tcpreplay?
DNS test. А что уже было сломано до нас?
• dnsperf & resperf? NO
• tcpreplay? NO
• Ideal/real world data? NOOO!!!
DNS test. How?
DNS test. How?
DNS test. Measurements
• QPS, RPS = PPS
• Traffic: Mbit/s
• CPU load avg
• Поведение при повышении нагрузки
• А еще есть крутилки и включалки!
DNS test. А на что будем смотреть?
• Knot (1.2.0 & 1.3.0-RC5)
• Yadifa (1.0.2)
• NSD3 (3.2.15)
• NSD4 (4.0.0b4)
• PowerDNS (3.3)
• TinyDNS (1.05)
• Unbound (1.4.16)
• Pdnsd (1.2.8)
• Server: Dual Xeon E5-2670 32Gb RAM DDR3 1333Mhz Intel X520-DA2 10Gbit
• Generator: Single Xeon E5-2670 32Gb RAM DDR3 1333Mhz Intel X520-DA2 10Gbit
• Gentoo Linux 3.7.9
DNS test. Setup
• Максимально ванильно!
• Authoritative: 300 сформированных зон
• Caching: Прогреваем кэш на такой же объем данных
Results. Выбираем победителя крутилок.
Knot-1.2.0, queries=1
Results. Выбираем победителя крутилок.
Knot-1.2.0, queries=1
Results. Queries in flow: 01
Knot
NSD
Unbound
Yadifa
PowerDNS
Pdnsd
TinyDNS
Results. Queries in flow: 01
Knot
NSD
Unbound
Yadifa
PowerDNS
Pdnsd
TinyDNS
Results. Queries in flow: 02
Knot
NSD
Unbound
PowerDNS
Pdnsd
Yadifa
TinyDNS
Results. Queries in flow: 02
Knot
NSD
Unbound
PowerDNS
Pdnsd
Yadifa
TinyDNS
Results. Queries in flow: 02
Knot
NSD
Unbound
PowerDNS
Pdnsd
Yadifa
TinyDNS
Results. Queries in flow: 20
Knot
NSD
Unbound
PowerDNS
Pdnsd
Yadifa
TinyDNS
Подводные камни.
IT HAPPENS. BE PREPARED
Подводные камни. Local.
• Knot-1.2.0 Победитель может все... Или не все?
Подводные камни. Local.
• Knot-1.2.0 Победитель может все... Или не все?
• Yadifa-1.0.2 Нужно больше золота!
Подводные камни. Local.
• Knot-1.2.0 Победитель может все... Или не все?
• Yadifa-1.0.2 Нужно больше золота!
• Pdnsd Приз за оригинальность.
Подводные камни. Global.
Камень
• UDP Мне кажется, пакет пришел оттуда... Но я не гарантирую это!
Контр-камень
• BCP38 Когда случится счастье – нам не ведомо!
Подводные камни. Global.
Камень
• UDP Мне кажется, пакет пришел оттуда... Но я не гарантирую это!
• DNS cache poisoning (Kaminsky) Адрес поменялся! Иди сюда!
Контр-камень
• BCP38 Когда случится счастье – нам не ведомо!
• DNSSec Это счастье есть, но мало кто пользуется
Подводные камни. Global.
Камень
• UDP Мне кажется, пакет пришел оттуда... Но я не гарантирую это!
• DNS cache poisoning (Kaminsky) Адрес поменялся! Иди сюда!
• Стать DNS Amplifier Чтобы не быть жертвой - надо не быть жертвой
- dig isoc.org ANY (26 vs 2435) - открытая рекурсия
Контр-камень
• BCP38 Когда случится счастье – нам не ведомо!
• DNSSec Это счастье есть, но мало кто пользуется
• Можно самостоятельно: - закрыть рекурсию извне - RRL (DROP, SLIP) - DROP пакетов с src_port 53
Подводные камни. Сам не выжил.
Подводные камни. Сам не выжил.
Подводные камни. Сам не выжил.
Спасибо!
Андрей Лескин [email protected]