Pruebas de rendimiento de un servidor DNS con dnsperf y resperf
La elección de una herramienta como DNS puede deberse a diferentes criterios:
- El conjunto de características que ofrece.
- La facilidad para configurarlo o mantenerlo funcionando.
- Su rendimiento.
La web https://cmdns.dev.dns-oarc.net/index.html
nos permite utilizar nuestro navegador para pasar unas pruebas al servidor DNS y obtener un informe sobre sus características.
Pero si queremos poner a prueba el rendimiento de un servidor DNS podemos utilizar dnsperf
y resperf
. Ambas herramientas sirven para enviar muchas consultas a nuestro servidor y presentar un informe. La primera (dnsperf
) está pensada para servidores DNS autoritativos y, aunque también puede utilizarse para valorar servidores cache, en este último caso se recomienda utilizar resperf
.
Para lanzar un test es necesario contar con un archivo de datos para hacer las consultas. El mismo DNS-OARC nos proporciona unos ficheros con 10 millones de consultas (1 millón por fichero).
Si se descarga alguno de los ficheros y se descomprime se comprobará que el fichero de datos es un fichero que tiene en cada línea un dominio y el tipo de registro por el que hay que preguntar.
Por ejemplo, las primeras líneas del primer fichero son:
thumbs2.ebaystatic.com. AAAA
mountaineerpublishing.com. MX
www.mediafire.com. A
s-static.ak.fbcdn.net. A
lachicabionica.com. A
www.freemarket.com. A
sip.hotmail.com. A
www.cangrejas.com. A
google.com. A
cache.defamer.com. A
Podemos lanzar un test indicando el archivo de datos y el servidor a consultar:
resperf -d queryfile-example-10million-201202_part01 -s 10.73.138.183
Durante un minuto se enviarán consultas al servidor y al terminal se mostrará un informe como el que se puede ver a continuación:
root@dnsperf:~# resperf -d queryfile-example-10million-201202_part01 -s 10.73.138.183 DNS Resolution Performance Testing Tool Version 2.9.0 [Status] Command line: resperf -d queryfile-example-10million-201202_part01 -s 10.73.138.183 [Status] Sending [Status] Reached 65536 outstanding queries [Status] Waiting for more responses [Status] Testing complete Statistics: Queries sent: 85374 Queries completed: 21111 Queries lost: 64263 Response codes: NOERROR 2927 (13.86%), SERVFAIL 15687 (74.31%), NXDOMAIN 2497 (11.83%) Reconnection(s): 0 Run time (s): 55.121700 Maximum throughput: 4996.000000 qps Lost at that point: 29.45% root@dnsperf:~#
Poner a prueba el rendimiento de un servidor es una cuestión compleja en la que intervienen muchos detalles. Ambas herramientas tienen muchos parámetros para modelar las condiciones del test, pero aquí vamos a utilizar el comando más sencillo posible para hacer una comparativa de cuatro servidores DNS cache recursivos: bind9
, knot-resolver
, powerdns-recursor
y unbound
.
Todos funcionando con la configuración por defecto instalados en un contenedor lxd
de ubuntu-22.04
con 1GB de RAM y 1 CPU.
Los resultados de este test son:
bind9 |
knot-resolver |
powerdns-recursor |
unbound |
|
Queries sent: | 85374 | 71049 | 101747 | 69234 |
Queries completed: | 21111 | 6876 | 40309 | 3802 |
Queries lost: | 64263 | 64173 | 61438 | 65432 |
Run time (s): | 55.121700 | 54.233570 | 56.049725 | 54.120441 |
Maximum throughput: | 4996.000000 qps | 1814.000000 qps | 7650.000000 qps | 918.000000 qps |
Más información: