Contents

Introdução

Overview

Quais dados estão em cache?

Como os dados são adicionados e removidos do cache?

Introdução

Este documento descreve como o OpenDNS/Umbrella resolve os registros de recursos de cache.

Overview

Os resolvedores do OpenDNS/Umbrella usam um programa conhecido como OpenDNSCache (ODC) para resolver consultas DNS. O ODC armazena em cache os dados que recebe para retornar resultados aos clientes de forma mais rápida e eficiente. Este artigo se concentra em como o cache ocorre e quando ele é usado.

Este artigo destina-se a usuários que desejam saber mais sobre os detalhes do cache do ODC (normalmente nameserver e administradores de domínio), ou para casos em que a resolução DNS pode não estar funcionando como esperado.

Quais dados estão em cache?

De acordo com o RFC 2181 (https://datatracker.ietf.org/doc/html/rfc2181), as respostas podem ser retornadas em uma resposta ou armazenadas em um cache com base na confiabilidade dos dados. O RFC define 7 níveis de confiança na seção 5.4.1:

1. Dados de um arquivo de zona primária, que não sejam dados de cola.

- Isso se aplica somente a servidores de nome autorizados, não aos resolvedores do OpenDNS

2. Dados de uma transferência de zona, exceto cola.

- Isso se aplica somente a servidores de nome autorizados, não aos resolvedores do OpenDNS

3. Os dados autoritativos incluídos na seção de resposta de uma resposta autoritativa.

- Isso se aplica ao OpenDNSCache

4. Dados da seção de autoridade de uma resposta oficial.

- Isso se aplica ao OpenDNSCache

5. Associe a partir de uma zona primária ou de uma transferência de zona.

- Isso se aplica somente a servidores de nome autorizados, não aos resolvedores do OpenDNS

6. i) dados da seção de resposta de uma resposta não autoritativa e ii) dados não autoritativos da seção de resposta de respostas autoritativas.

- i) é um exemplo do que os nossos resolvedores retornam. Ou seja, dados não autoritativos.

- Para o ii), observe que a seção de respostas de uma resposta autoritativa normalmente contém apenas dados autoritativos.  No entanto, quando o nome solicitado é uma alcunha (ver seção 10.1.1), apenas o registro que descreve essa alcunha é necessariamente autoritativo.  Os clientes podem supor que outros registros devem ter vindo do cache do servidor.  Onde as respostas oficiais são necessárias, o cliente pode consultar novamente, usando o nome canônico associado ao alias.

7. i) Informações adicionais de uma resposta oficial; ii) Dados da seção de autoridade de uma resposta não autoritativa; iii) Informações adicionais de respostas não oficiais.

- Tudo isso se aplica ao OpenDNSCache

- Os registros recebidos de qualquer uma dessas fontes não devem ser armazenados em cache para retornar os resultados às consultas.

O OpenDNSCache armazena em cache dados de respostas com os níveis de confiança 3, 4 e 6. Se recebermos novos dados com um nível de confiança melhor ou igual, substituiremos a entrada de cache antiga.

A exceção aqui é para registros NS, para os quais apenas substituímos dados com um nível de confiança melhor.

Como os dados são adicionados e removidos do cache?

Os dados expirados não são excluídos do cache. Essa é a base do recurso SmartCache, por meio do qual retornamos Registros de Recursos (RRs) expirados do cache se não conseguirmos acessar as autoridades por algum motivo.

Em vez disso, o cache em cada resolvedor tem um tamanho fixo e, quando um novo RR é adicionado ao cache, o RR mais antigo é removido. Isso pode ser visualizado como uma fila onde novas entradas são adicionadas à fila, expulsando entradas antigas da fila (para os cientistas da computação, isso é realmente implementado como uma lista circular duplamente vinculada).

Observe que, conforme descrito acima, uma resposta DNS pode conter vários RRs com diferentes níveis de confiança, nem todos os dados que foram originalmente solicitados. Assim, após receber uma resposta, podemos ter vários RRs para adicionar ao cache.

Como observado acima, observe que os registros NS são isentos desse comportamento, pois apenas substituímos entradas de registros NS no cache se o nível de confiança dos dados for superior à entrada existente. Isso é feito para garantir que possamos detectar mudanças nas autoridades na cola matriz se as autoridades antigas ainda estiverem respondendo e retornando como a autoridade.