Pruebas de rendimiento de un servidor DNS con dnsperf y resperf

per Victor Carceler darrera modificació 2023-10-22T10:22:20+02:00

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.

Check-My-DNS.png

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: