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:

