1.一种用于对域名系统黑名单进行无锁更新的计算机实现的方法,包括:
(a)在多个DNS解析器中的一个DNS解析器处,读取域名黑名单的条目,所述条目指定所述DNS解析器在所述DNS解析器接收到解析域名的请求时将执行的策略;
在所述读取完成之前:
(b)接收所述域名黑名单的更新条目;
(c)将新记录添加至所述域名黑名单;
(d)将正读取的条目放入具有当前版本号的垃圾池;
独立于所述读取(a):
(e)对所述当前版本号进行递增;
(f)为递增后的版本号创建新的垃圾池;以及
(g)当所述读取完成时,将所述当前版本号分配给所述DNS解析器。
2.根据权利要求1所述的方法,进一步包括,定期地:
(h)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号;以及
(i)删除放入垃圾池中的、具有早于在(h)中确定的所述最早版本号的版本号的条目。
3.根据权利要求2所述的方法,进一步包括:
(j)在所述DNS解析器处,接收将所述域名解析为网络地址的请求,其中,所述读取(a)响应于接收到所述请求而发生;以及
(k)基于在(a)中读取的所述条目确定是否将域名执行为所述网络地址。
4.根据权利要求2所述的方法,进一步包括,在所述读取(a)之前:
(j)从所述DNS解析器向写入器发送接收域名黑名单数据的请求;以及
(k)作为对所述请求的响应,接收对储存有分配给所述DNS解析器的版本号的位置的索引。
5.根据权利要求4所述的方法,其中,所述写入器将所述当前版本号分配给所索引的位置。
6.根据权利要求2所述的方法,进一步包括,定期地:
(j)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号的年龄是否超过阈值;
当确定所述最早版本号的年龄超过所述阈值时:
(k)为所述DNS解析器复制具有所述最早版本号的垃圾池;以及
(l)删除所述垃圾池。
7.根据权利要求1所述的方法,其中,步骤(e)和(f)定期发生。
8.一种用于对域名系统黑名单进行无锁更新的系统,包括:
包括处理器和存储器的计算装置;
储存在所述存储器上的版本表;
共用所述域名系统黑名单的多个DNS解析器,每个DNS解析器实现在计算装置上并且包括读取器,所述读取器被配置为读取域名黑名单的条目,所述条目指定所述DNS解析器在所述DNS解析器接收到解析域名的请求时将执行的策略;
写入器,所述写入器被配置为,在所述读取完成之前:(i)接收所述域名黑名单的更新条目,(ii)将新记录添加至所述域名黑名单,以及(iii)将正读取的条目放入具有当前版本号的垃圾池;
垃圾池创建器,所述垃圾池创建器被配置为,独立于所述读取器:(i)对所述当前版本号进行递增以及(ii)为递增后的版本号创建新的垃圾池;以及
版本更新器,所述版本更新器被配置为,当所述读取完成时,将所述当前版本号分配给所述DNS解析器。
9.根据权利要求8所述的系统,进一步包括垃圾移除器,所述垃圾移除器被配置为定期地:(i)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号;以及(ii)删除放入垃圾池中的、具有早于所述垃圾移除器在(i)中确定的所述最早版本号的版本号的条目。
10.根据权利要求9所述的系统,进一步包括RPZ核查器,所述RPZ核查器被配置为(i)在所述DNS解析器处,接收将所述域名解析为网络地址的请求,其中,所述读取器响应于接收到所述请求而读取所述条目,以及(ii)基于所述读取器读取的所述条目确定是否将域名执行为所述网络地址。
11.根据权利要求9所述的系统,进一步包括访问寄存器,所述访问寄存器在所述读取器读取所述条目之前:(i)从所述DNS解析器向写入器发送接收域名黑名单数据的请求,以及(ii)作为对所述请求的响应,接收对储存有分配给所述DNS解析器的版本号的位置的索引。
12.根据权利要求11所述的方法,其中,所述写入器将所述当前版本号分配给所索引的位置。
13.根据权利要求9所述的系统,进一步包括快照创建器,所述快照创建器被配置为定期地:确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号的年龄是否超过阈值,以及,当确定所述最早版本号的年龄超过所述阈值时,为所述DNS解析器复制具有所述最初版本号的垃圾池并且删除所述垃圾池。
14.根据权利要求8所述的系统,其中,所述垃圾池创建器定期地操作。
15.一种在其上存储有指令的非暂时性计算机可读介质,当所述指令由至少一个计算装置执行时,使得所述至少一个计算装置执行用于对域名系统黑名单进行无锁更新的方法,所述方法包括:
(a)在多个DNS解析器中的一个DNS解析器处,读取域名黑名单的条目,所述条目指定所述DNS解析器在所述DNS解析器接收到解析域名的请求时将执行的策略;
在所述读取完成之前:
(b)接收所述域名黑名单的更新条目;
(c)将新记录添加至所述域名黑名单;
(d)将正读取的条目放入具有当前版本号的垃圾池;
独立于所述读取(a):
(e)对所述当前版本号进行递增;
(f)为递增后的版本号创建新的垃圾池;以及
(g)当所述读取完成时,将所述当前版本号分配给所述DNS解析器。
16.根据权利要求15所述的计算机可读介质,所述方法进一步包括,定期地:
(h)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号;以及
(i)删除放入垃圾池中的、具有早于在(h)中确定的所述最早版本号的版本号的条目。
17.根据权利要求16所述的计算机可读介质,所述方法进一步包括:
(j)在所述DNS解析器处,接收将所述域名解析为网络地址的请求,其中,所述读取(a)响应于接收到所述请求而发生;以及
(k)基于在(a)中读取的所述条目确定是否将域名执行为所述网络地址。
18.根据权利要求16所述的计算机可读介质,所述方法进一步包括,在所述读取(a)之前:
(j)从所述DNS解析器向写入器发送接收域名黑名单数据的请求;以及
(k)作为对所述请求的响应,接收对储存有分配给所述DNS解析器的版本号的位置的索引。
19.根据权利要求18所述的计算机可读介质,其中,所述写入器将所述当前版本号分配给所索引的位置。
20.根据权利要求16所述的计算机可读介质,所述方法进一步包括,定期地:
(j)确定在所述多个DNS解析器中的所有所述DNS解析器的最早版本号的年龄是否超过阈值;
当确定所述最早版本号的年龄超过所述阈值时:
(k)为所述DNS解析器复制具有所述最早版本号的垃圾池;以及
(l)删除所述垃圾池。
21.一种用于对共享存储器进行无锁更新的计算机实现方法,包括:
(a)在多个读取器线程中的一个读取器线程处,读取所述共享存储器的条目;
在所述读取完成之前:
(b)接收所述共享存储器的更新条目;
(c)将新记录添加至所述共享存储器;
(d)将正读取的条目放入具有当前版本号的垃圾池;
独立于所述读取(a):
(e)对所述当前版本号进行递增;
(f)为递增后的版本号创建新的垃圾池;
(g)当所述读取完成时,将所述当前版本号分配给所述读取器线程;
定期地:
(h)确定在所述多个读取器线程中的所有所述读取器线程的最早版本号;以及
(i)删除放入垃圾池中的、具有早于在(h)中确定的所述最早版本号的版本号的条目。