目录

简介

概述

缓存哪些数据？

如何从缓存中添加和删除数据？

简介

本文档介绍OpenDNS/Umbrella解析器如何缓存资源记录。

概述

OpenDNS/Umbrella解析程序使用称为OpenDNSCache(ODC)的程序来解析DNS查询。ODC会缓存它接收的数据，以便更快速有效地将结果返回给客户端。本文重点介绍缓存的产生方式和使用时间。

本文面向希望详细了解ODC缓存具体信息的用户（通常为域名服务器和域管理员），或者针对DNS解析可能无法按预期正常工作的情况。

缓存哪些数据？

根据RFC 2181(https://datatracker.ietf.org/doc/html/rfc2181)，响应可以在回复中返回，也可以根据数据的可信度存储在缓存中。RFC在第5.4.1节中定义了7个信任级别：

1. 来自主区域文件的数据，而不是胶合数据。

- 这仅适用于授权名称服务器，而不适用于OpenDNS解析器

2. 来自区域传输的数据，而不是胶水。

- 这仅适用于授权名称服务器，而不适用于OpenDNS解析器

3. 包括在权威回复的应答部分中的权威数据。

- 这适用于OpenDNSCache

4. 来自权威答案权威部分的数据。

- 这适用于OpenDNSCache

5. 从主区域粘贴或从区域转移粘贴标签。

- 这仅适用于授权名称服务器，而不适用于OpenDNS解析器

6. i)来自非权威应答的应答部分的数据，和ii)来自权威应答的应答部分的非权威数据。

- i)是解析器返回内容的示例。即非权威数据。

- 对于ii)，请注意权威应答的应答部分通常仅包含权威数据。 但是，如果所查找的名称是别名(请参阅第10.1.1节)，则只有描述该别名的记录才是权威的。 客户端可以假设其他记录必须来自服务器的缓存。 在需要授权答案时，客户端可以使用与别名关联的规范名称再次查询。

7. i)权威应答中的附加信息；来自非权威答案权威部分的数据；（三）来自非权威性答复的其他信息。

- 所有这些都适用于OpenDNSCache

- 为了将结果返回给查询，不得对从这些源中任何源接收的记录进行缓存。

OpenDNSCache会缓存信任级别为3、4和6的响应中的数据。如果我们收到具有更好或相等信任级别的新数据，则会替换旧的缓存条目。

NS记录除外，我们只用更好的信任级别替换数据。

如何从缓存中添加和删除数据？

过期数据不会从缓存中删除。这是SmartCache功能的基础，通过此功能，如果我们由于某种原因无法联系权威机构，我们将从缓存返回过期的资源记录(RR)。

相反，每个解析器上的缓存是固定大小，当新的RR添加到缓存时，最早的RR会被删除。这可以可视为一个队列，新条目被添加到队列中，将旧条目从队列中挤出（对于外面的计算机科学家，这实际上是一个循环的双链接列表）。

请注意，如上所述，DNS响应可以包含多个具有不同信任级别的RR，并非所有这些RR都是最初请求的数据。因此，在收到响应后，我们可能有多个RR添加到缓存。

如上所述，NS记录不受此行为影响，因为只有当数据的信任级别高于现有条目时，我们才替换缓存中的NS记录条目。这样做是为了确保如果旧当局仍然作出反应并将自己作为当局归还，我们就能发现母当局的变化是胶水粘着的。