Existe un sitio web de noticias importante en Chile que es muy lento de cargar en mi navegador. Un análisis reveló que hay un problema con los registros DNS para IPv6.

El problema es que los servidores DNS de los dominios de este sitio web no responden nada por una consulta de registro “AAAA” (que son las direcciones IPv6), resultando en un “timeout” del punto de vista del cliente. Este es un comportamiento incorrecto. Si las zonas no tienen registros AAAA, deberían enviar una respuesta vacía en forma inmediata (NOERROR, con answers=0). O por último si se trata de un servidor de nombres muy antiguo, que no tiene conocimiento de los AAAA, con un RCODE que indica que no entiende la consulta. Pero en ambos casos se trata de una respuesta inmediata, que permite tomar las acciones correspondientes. Este comportamiento de “no respuesta” puede deberse a un firewall en frente del DNS que está filtrando los paquetes con ciertas consultas “conocidas”, y quizás descarta cualquier cosa que no entiende, sin permitir que sea el propio servidor de nombres el que lo haga.

Producto de “timeouts encadenados” es que en mi navegador el sitio demora CUARENTA Y CINCO segundos en cargar. Esto porque yo tengo conectividad IPv6, y entonces el navegador envía tanto consultas A como AAAA a su resolver local. Las consultas A responden de inmediato, pero las AAAA se cancelan a los 5 segundos al no obtener respuesta. Este comportamiento se repite 3 veces, con lo que da un total de 15 segundos solo en resolver el nombre principal del sitio. Luego de esto comienza la carga de la página, el que contiene scripts en otro sitio web del mismo dominio, que nuevamente demora 15 segundos en resolver, y finalmente imágenes en otro subdominio, que suma los últimos 15 segundos.

Este último comportamiento podría tratarse además de un error del navegador, que demora innecesariamente el despliegue de una página por una imagen, pero los scripts deben ser cargados antes que el resto.

A esto se suma lamentablemente un TTL muy pequeño del registro final, que obliga a una resolución nueva cada 30 segundos; y peor aún, uno de los NS para el balanceador de carga posee una dirección privada, con lo que 1/3 de las consultas falla.

La recomendación es la revisión de todos los servidores de nombre en su comportamiento frente a consultas AAAA, incluso aunque aún no se utilicen servicios en IPv6, porque serán los clientes quienes lo comenzarán a utilizar, y enviarán consultas DNS por estos registros en todos los sitios web que visiten.


Next post: Setting up your website (and DNS) for IPv6

Previous post: I won a pie!