Cache DNS - iterativo vs recursivo

Cache DNS - iterativo vs recursivo

Em uma arquitetura DNS iterativa, os servidores DNS locais possuem caches e podem, na maioria das vezes, ignorar o contato com servidores raiz e TLD.

Em um esquema recursivo, o servidor DNS local contata um servidor DNS que busca recursivamente o resultado e responde com o recurso solicitado.

Qual é a diferença entre DNS iterativo e recursivo do ponto de vista do cache?

O servidor DNS local ainda pode usar um atalho em uma arquitetura recursiva?

Responder1

Qual é a diferença entre DNS iterativo e recursivo do ponto de vista do cache?

Não há diferença. O tempo de vida (TTL) do servidor autoritativo, juntamente com as políticas locais, indicarão por quanto tempo os registros serão mantidos e servidos a partir do cache.

O servidor DNS local ainda pode usar um atalho em uma arquitetura recursiva?

Se o DNS local não for um DNS somente de encaminhamento, sim, e isso acontece o tempo todo. Depois de saber como obter a resposta para um domínio específico, você não irá novamente até a raiz enquanto as informações estiverem no cache. Os dados podem ser removidos do cache porque o TTL original expirou ou porque a configuração local definiu um limite no tamanho do cache ou TTL. Por bindexemplo, isso seria max-cache-ttl.

Responder2

Agora existe um documento canônico sobre a terminologia do DNS:

RFC 8499, também conhecido como BCP 219

Aqui estão suas definições relevantes, ligeiramente resumidas e reordenadas:

  • "Resolvedor recursivo: um resolvedor que atua em modo recursivo. [..] [RFC4697] tentou diferenciar entre um resolvedor recursivo e um resolvedor iterativo."

  • "Modo recursivo: modo de resolução de um servidor que recebe consultas DNS e responde a essas consultas de um cache local ou envia consultas a outros servidores para obter as respostas finais às consultas originais."

  • "Resolução iterativa: Um servidor de nomes pode receber uma consulta que só pode ser respondida por algum outro servidor. As duas abordagens gerais para lidar com este problema são "recursivas", em que o primeiro servidor realiza a consulta em nome do cliente em outro servidor, e "iterativo", em que o servidor encaminha o cliente para outro servidor e permite que o cliente prossiga a consulta lá (consulte a Seção 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]."
    

A RFC 4697 citada acima diz o seguinte:

Este memorando está preocupado principalmente com o comportamento dos resolvedores iterativos , que normalmente são encontrados como parte de um servidor
de nomes recursivo .
Este memorando usa o termo mais preciso "resolvedor iterativo",
porque o foco geralmente está nesse componente. Nos casos em que
a função de servidor de nomes desta entidade exige menção, este memorando
usa o termo "servidor de nomes recursivo". Como exemplo da
diferença, o componente servidor de nomes de um servidor de nomes recursivo
recebe consultas DNS e o componente resolvedor iterativo envia
consultas.

A RFC 1034 me parece ainda mais obscura sobre isso, ou mais precisamente, ainda mais desatualizada:

  • Em qualquer sistema que possua um banco de dados distribuído, um determinado servidor de nomes pode receber uma consulta que só pode ser respondida por algum outro servidor. As duas abordagens gerais para lidar com este problema são "recursivas", em que o primeiro servidor prossegue a consulta do cliente em outro servidor, e "iterativa", em que o servidor encaminha o cliente para outro servidor e permite que o cliente prossiga a consulta. consulta. Ambas as abordagens têm vantagens e desvantagens, mas a abordagem iterativa é preferida para o estilo de acesso datagrama. O sistema de domínio requer a implementação da abordagem iterativa, mas permite a abordagem recursiva como opção.

Voltando à sua pergunta de:

Qual é a diferença entre DNS iterativo e recursivo do ponto de vista do cache?

No meu entendimento de como as coisas funcionam em estado selvagem (o que não está exatamente alinhado com as definições acima), não há diferenças, pois um servidor de nomes recursivo faz consultas iterativas para resolver quaisquer nomes solicitados pelo cliente.

e para

O servidor DNS local ainda pode usar um atalho em uma arquitetura recursiva?

Basicamente, qualquer coisa que não seja autoritativa pode ter um cache e, desde que obedeça aos TTLs obtidos nas respostas anteriores recebidas, estará funcionando dentro dos limites do protocolo.

Observe que no futuro as coisas podem ficar mais confusas: algumas propostas como ANAMEimplementações específicas podem exigir que um servidor de nomes autoritativo também se torne recursivo/iterativo no momento em que uma determinada consulta chega para poder resolver o alvo.

informação relacionada