Almacenamiento en caché de DNS: iterativo frente a recursivo

Almacenamiento en caché de DNS: iterativo frente a recursivo

En una arquitectura DNS iterativa, los servidores DNS locales tienen cachés y en su mayoría pueden omitir el contacto con los servidores raíz y TLD.

En un esquema recursivo, el servidor DNS local se pone en contacto con un servidor DNS que recupera el resultado de forma recursiva y responde con el recurso solicitado.

¿Cuál es la diferencia entre DNS iterativo y recursivo desde el punto de vista del almacenamiento en caché?

¿Puede el servidor DNS local seguir tomando un atajo en una arquitectura recursiva?

Respuesta1

¿Cuál es la diferencia entre DNS iterativo y recursivo desde el punto de vista del almacenamiento en caché?

No hay diferencia. El tiempo de vida (TTL) del servidor autorizado, junto con las políticas locales, indicarán durante cuánto tiempo se conservarán y servirán los registros desde la memoria caché.

¿Puede el servidor DNS local seguir tomando un atajo en una arquitectura recursiva?

Si el DNS local no es un DNS de solo reenvío, entonces sí, y sucede todo el tiempo. Una vez que sepa cómo obtener una respuesta para un dominio específico, no volverá a llegar a la raíz mientras la información esté en el caché. Los datos se pueden eliminar de la caché porque el TTL original expiró o porque la configuración local estableció un límite en el tamaño de la caché o TTL. Por bindejemplo eso sería max-cache-ttl.

Respuesta2

Ahora existe un documento canónico sobre terminología DNS:

RFC 8499 también conocido como BCP 219

Aquí están sus definiciones relevantes, ligeramente abreviadas y reordenadas:

  • "Resolvedor recursivo: un solucionador que actúa en modo recursivo. [..] [RFC4697] intentó diferenciar entre un solucionador recursivo y un solucionador iterativo".

  • "Modo recursivo: un modo de resolución de un servidor que recibe consultas DNS y responde a esas consultas desde un caché local o envía consultas a otros servidores para obtener las respuestas finales a las consultas originales".

  • "Resolución iterativa: a un servidor de nombres se le puede presentar una consulta que sólo puede ser respondida por otro servidor. Los dos enfoques generales para abordar este problema son "recursivos", en los que el primer servidor realiza la consulta en nombre del cliente. en otro servidor, y "iterativo", en el que el servidor remite al cliente a otro servidor y le permite realizar la consulta allí (consulte la Sección 2.3 de [RFC1034].)

    In iterative resolution, the client repeatedly makes non-recursive
    queries and follows referrals and/or aliases.  The iterative
    resolution algorithm is described in Section 5.3.3 of [RFC1034]."
    

El RFC 4697 citado anteriormente dice esto:

Este memorándum se ocupa principalmente del comportamiento de
los solucionadores iterativos, que normalmente se encuentran como parte de un
servidor de nombres recursivo. Esta nota utiliza el término más preciso "resolución iterativa",
porque la atención se centra normalmente en ese componente. En los casos en los que
sea necesario mencionar la función de servidor de nombres de esta entidad, este memorando
utiliza el término "servidor de nombres recursivo". Como ejemplo de la
diferencia, el componente del servidor de nombres de un servidor de nombres recursivo
recibe consultas DNS y el componente de resolución iterativo envía
consultas.

RFC 1034 me parece aún más confuso al respecto, o más precisamente, incluso más desactualizado:

  • En cualquier sistema que tenga una base de datos distribuida, a un servidor de nombres en particular se le puede presentar una consulta que sólo puede ser respondida por algún otro servidor. Los dos enfoques generales para abordar este problema son el "recursivo", en el que el primer servidor realiza la consulta del cliente en otro servidor, y el "iterativo", en el que el servidor remite al cliente a otro servidor y le permite realizar la consulta. consulta. Ambos enfoques tienen ventajas y desventajas, pero se prefiere el enfoque iterativo para el estilo de acceso de datagrama. El sistema de dominio requiere la implementación del enfoque iterativo, pero permite el enfoque recursivo como opción.

Volviendo a tu pregunta de:

¿Cuál es la diferencia entre DNS iterativo y recursivo desde el punto de vista del almacenamiento en caché?

Según tengo entendido, cómo funcionan las cosas en la naturaleza (que no está exactamente alineado con las definiciones anteriores), no hay diferencias ya que un servidor de nombres recursivo realiza consultas iterativas para resolver cualquier nombre que el cliente haya solicitado.

y para

¿Puede el servidor DNS local seguir tomando un atajo en una arquitectura recursiva?

Básicamente, cualquier cosa que no tenga autoridad puede tener un caché y, siempre que obedezca los TTL que obtuvo de las respuestas anteriores que recibió, funcionará dentro de los límites del protocolo.

Tenga en cuenta que en el futuro las cosas pueden volverse más confusas: algunas propuestas como ANAMEimplementaciones específicas pueden requerir que un servidor de nombres autorizado también se vuelva recursivo/iterativo en el momento en que llega una consulta determinada para poder resolver el objetivo.

información relacionada