机房360首页
当前位置:首页 » 技术解构 » Google免费公共DNS服务器提速四大法宝

Google免费公共DNS服务器提速四大法宝

来源:51CTO 作者:机房360 更新时间:2009/12/6 19:36:03

摘要:Google推出了“Google免费公共DNS服务器”据Google官方声称,Google DNS的目标是速度、安全性和有效性,它意味着完全没有劫持、没有阻截、没有过滤的DNS查询,而且速度飞快。那么为什么Google敢说自己的DNS服务器速度快呢?


    Google免费公共DNS服务器如何提高DNS查找速度

    在Google公共DNS中,我们采用了多种技术手段来提高DNS查找速度,其中一些方法是实验性质的,另外一些是遵循标准的。

    1、充分配置服务器处理来自客户端的通信,包括恶意流量。
    2、预防DoS和放大攻击,虽然这是一个安全问题,但阻止DoS攻击可以提高DNS服务器处理正常请求的能力。
    3、共享缓存负载均衡,提高跨服务器集群的缓存命中率。
    4、域名预取技术。克服传统的被动式缓存缺陷,我们将通过这个技术满足流量有限和缓存分区等技术挑战。
    5、提供给全球用户使用。

    Google免费公共DNS服务器提速法宝一:正确配置服务器集群

    缓存DNS解析器必须执行比权威服务器更多的工作,因为很多响应不能直接从内存中找到结果,相反,它们需要与其它域名服务器通信,因此需要大量的网络I/O。此外,开放式解析器容易遭受攻击,如发送一些不能解析的全球,这增加了缓存丢失率,同时DoS攻击会增加通信负载。如果解析器没有正确配置集群,合理分配工作负载,可能也会带来负面的性能影响。如数据包被丢掉,需要重传,抵达域名服务器的请求必须排队等。所有这些因素都会引起延迟。

    因此,为DNS解析器提供大容量的I/O非常重要,包括处理可能的DoS攻击,唯一有效的方法就是提供非常多的服务器,同时,增加服务器最重要的就是不能降低缓存命中率,这需要采用有效的负载均衡策略。

    Google免费公共DNS服务器提速法宝二:共享缓存负载均衡

    如果负载均衡配置不当,增加服务器反倒会降低缓存命中率,在一个常见的部署中,多台服务器位于一台负载均衡器背后,使用诸如循环这样的简单算法来分配请求,这样做的结果是每台服务器维护它们自己的独立缓存,因此缓存内容是孤立的。如果每个请求根据通信情况被随机分配,缓存丢失率将不断增长,例如,对于那些长TTL重复查询的域名,缓存丢失率会随集群中服务器数量的增加而增长。 

    为了提高缓存命中率,最重要的是负载均衡,避免缓存分散在各个服务器上,目前有两种方法:一是使所有服务器使用全局缓存,二是按域名将缓存分区,所有同一域名的查询就会被定向到同一台服务器。在Google公共DNS中,我们同时使用了这两种技术,每台服务器都共享一个小的全局缓存,包括最流行的域名,这些服务器负载均衡就很好控制了,如果这些缓存不能满足查询,它会根据域名将请求发给另一个服务器,所有相同域名的查询都会发给同一台服务器。

    Google免费公共DNS服务器提速法宝三:域名预取技术

    随着互联网规模的扩大,传统解析器命中率有些限制,它们一般缓存的都是比较流行的域名,我们希望也能够处理冷门的域名,在传统DNS服务器上,由于这些冷门域名访问次数较少,过不了多长时间就会过期,就会从缓存中清除。

    为了实现这些目标,我们正在试验域名预取技术,当前主要面临两大挑战: 
    1、考虑其他域名服务器的限制。为了确保我们的预取技术不会给其它域名服务器带来过多的负载,我们队我们的传出请求做了限制,确保其它服务器的容量不被用尽。
    2、管理我们自己服务器的容量限制。由于我们的服务器没有无限的内存和CPU,在挑选域名预取服务器时要谨慎。此外,为了保护缓存不被伪造的攻击吃掉,我们将主要缓存分成主/次分区,并根据流量类型授予每个分区上的读/写权限。 

    为了最大限度使用固定域名服务器,我们需要权衡每个域名记录的成本,不过要确定每个域名的成本是一项复杂的任务,因为我们想实现以下所有目标,其中一些是相互冲突的:
    1、最小化缓存丢失。这意味着我们不需要预取流行的域名,因为考正常的用户访问流量足以保证它不被清除出缓存。
    2、即使我们的服务器正在遭受拒绝服务攻击,但仍然要为流行的域名提供服务在,这意味着我们需要预取流行的域名。
    3、避免假域名污染攻击,这意味着我们不能完全依靠域名来选择流量。
    4、保持选中的域名更新,我们须臾根据流行度,成本等因素调整候选域名。

    域名选择问题的复杂性使得它不能在线完成,因此我们将预取系统分成了两部分:管道组件,它是一个外部运行的,脱机的,周期性的过程,它选择域名提交到预取系统;另一个是运行时组件,定期根据它们的TTL窗口解析选中的域名。

    管道组件综合来自各个不同源的域名,主要是Google搜索索引和最近的Google公共DNS服务器日志,根据效益进行排列,效益是各种因素的结合,包括命中率、缓存丢失成本和知名度。管道然后参照TTL成本,重新对所有记录进行排列,从顶部选择所有域名,知道成本预算用尽,管道不断更新选定的域名,运行时组件解析选中的域名记录,并根据它们的TTL设置刷新它们。

    Google免费公共DNS服务器提速法宝四:分布式DNS服务集

    对于封闭式解析器,不存在这个问题,但对于开放式解析器,服务器越接近用户越好,他们在客户端看到的延迟会更少,此外,足够的地域覆盖也是保证端到端低延迟的重要手段,域名服务器通常会返回优化后的结果,也就是说,如果一个内容提供商在全世界都托管了他们的镜像站点,该提供商的域名服务器将会返回离访问IP最近的IP地址。

    Google公共DNS托管在全球的数据中心中,并使用选播路由将用户转向最近的数据中心。

    注意,由于域名服务器根据解析器的IP地址而不是用户的IP地址作为定位依据的,Google公共DNS服务器和其它开放式DNS服务有相同的限制:用户可能不会被定向到本地DNS提供商的服务器。这可能导致某些网站浏览起来仍然很慢。

本文地址:http://www.jifang360.com/news/2009126/n33593448.html 网友评论: 阅读次数:
版权声明:凡本站原创文章,未经授权,禁止转载,否则追究法律责任。
相关评论
正在加载评论列表...
评论表单加载中...
  • 我要分享
更多
推荐图片