轻松应对双十一零点的DNS流量洪峰

简介: 首次披露阿里巴巴DNS系统遇到的极端挑战。 一次淘宝天猫网页的点击触发几十台服务器发出DNS请求。每年双十一零点时,海量的用户请求带来了巨大的DNS流量。阿里巴巴DNS团队自研了一套DNS系统——DNS Mega,轻松应对双十一零点的DNS流量洪峰。

首次披露阿里巴巴DNS系统遇到的极端挑战。

    每年双十一,对阿里巴巴的各种技术都是一个挑战。DNS也不例外。

    DNS协议从最早的hosts文件,到RFC 1034、RFC 1035把DNS协议标准化,已经有四十年的历史了,是TCP/IP协议族中最古老的协议之一。到现在为止,有上百篇RFC对DNS进行了各种扩充和加固。使得DNS成为最常用,最不可缺少的互联网基础设施之一。大多数网络程序启动后,发出的第一个数据包即是gethostbyname()调用产生的DNS请求包。因为网络上的程序通信,早已抛弃了通过IP直连的方式,转而由域名相互调用。好处很多:方便调试、维护,易于人类理解。在IPv6网络中,更难以直接引用IP地址,必须转化成简单易读的域名形式。

    在DNS系统中,主要角色有:DNS解析器、递归DNS、权威DNS。DNS解析器是Windows、Linux上的一段DNS代码,也就是glibc对gethostbyname()实现,作用是接收上层应用的调用,在网络上发出一个DNS请求包,接收应答,提取解析结果返回给上层应用。

未命名.png

    递归DNS部署在离PC机、服务器很近的网络位置。递归DNS的服务IP是Windows配置的DNS服务器IP、Linux的/etc/resolv.conf中的NS IP。递归DNS接收DNS解析器发来的请求,去各级权威DNS做递归请求。递归DNS会把递归结果缓存在本地,下次收到同样的请求,就不再去递归了。递归DNS本身是一个缓存,不保存权威的数据。

    权威DNS保存了域名和IP的对应关系,由根到各种顶级域,一级级授权。例如根的权威DNS储存了.com .net .cn等等各个顶级域的权威DNS的IP。.com的权威DNS保存了taobao.com.的权威DNS的IP。www.taobao.com.的域名和IP地址的对应关系,就存在taobao.com.的权威DNS服务器。递归DNS一级级查找,从taobao.com.的权威DNS拿到www.taobao.com.的IP,返回给用户。

    从以上系统能看出来,复杂、耗时的递归逻辑由递归DNS完成,DNS客户端只是简单的发出DNS请求。DNS系统把复杂的逻辑包裹在系统内,对用户提供了简单清晰的逻辑。递归DNS是对用户提供服务的窗口,也是请求压力非常大的一个模块。在阿里巴巴内网,由于以下几个原因,递归DNS收到的请求的qps非常高。

  1. 各种良莠不齐的应用代码产生的大量无效DNS请求
  2. 各个业务方的压力测试带来的突发DNS请求
  3. 低版本OS/glibc带来的多余的主机名正反解请求
  4. 海量服务器带来的DNS请求,积少成多,汇聚到DNS服务器成为巨大的流量
  5. DNS攻击,这里具体指针对递归DNS、权威DNS的攻击

双十一的DNS技术挑战
    集团内部各个系统间的调用,是通过域名调用,而不是IP。一次淘宝天猫网页的点击,从多台服务器发出几十个DNS请求到DNS服务器。每年双十一零点时,海量的用户请求来到阿里巴巴网络内部,一石激起千层浪,阿里内部各个系统被激活,海量的相互调用导致了DNS请求的峰值。为了应对这么大量的DNS请求,传统的堆机器的方式已不再有效。

    在双十一零点峰值场景下,递归DNS的流量是平常的许多倍。而权威DNS的流量上涨不如递归DNS明显。因为在双十一时,被请求量很大的都是重复的域名。一个用户的购买请求,可能触发A、B……Z系统间相互调用。另一个购买请求还是会请求这几个域名。这就使得递归DNS的缓存命中率很高,请求不会到权威DNS。

    导致这么多的DNS请求的原因除了双十一,还有操作系统的域名机制的原因。

    Windows操作系统自身提供了DNS缓存功能,通过ipconfig /displaydns可以查看系统当前缓存。Linux默认是没有DNS缓存的,但有类似于Windows下的DNS缓存软件nscd。只要启动了nscd服务,就能使用DNS缓存。一般Linux本机是不做DNS缓存的。如果Linux本地缓存了DNS,一旦这个域名对应的IP失效或变更了,本地应用程序就无法立即感知到变化,导致故障。
除了操作系统的缓存之外,应用本身一般也会设计DNS缓存以实现效率的最大化,以JVM为例,JVM对于正常域名的缓存为30秒。

    还有一个较大的问题。很多系统使用DNS实现负载均衡,一个域名配置了多个IP。gethostbyname()返回给上层应用的,是第一个IP。这要求递归DNS将多条IP的顺序打乱,随机返回。如果不同IP对应的集群服务能力不同,还需要递归DNS按照权重返回IP。

阿里巴巴的自研DNS解决方案
    阿里巴巴DNS团队自研了一套DNS系统——DNS Mega,轻松应对双十一零点的DNS流量洪峰。

    DNS Mega是一套递归DNS系统,可以应对大流量的DNS请求。使用单台物理服务器,即可获得非常高的QPS能力。以往需要水平扩展服务器台数,以提高DNS的系统容量,这种方式比较原始,扩容缩容都很慢。有了DNS Mega,一套集群里只需要部署不多的几台服务器,即可满足大量业务服务器的DNS需求。DNS Mega在域名缓存即将过期时,会重新请求这个域名,使得DNS Mega系统中的域名始终反应权威DNS的最新状态。

    在应对DNS攻击方面,DNS Mega有一套独特的逻辑。针对递归DNS比较多的攻击是泛域名攻击,也就是请求a.taobao.com b.taobao.com。前缀不断变化的域名请求。一般的递归DNS系统,收到这些请求都不会命中缓存,会到权威DNS递归。占用大量的递归DNS资源。DNS Mega能区分出正常请求和攻击请求,将更多的资源分配给正常请求。

    值得高兴的是,包括DNS Mega在内的阿里公共DNS,已经对广大互联网用户提供服务了。PC、移动设备、服务器等各种终端,都可以免费使用阿里公共DNS。用户只需要把本机的DNS地址设置成223.5.5.5和223.6.6.6,即可用到完全免费、快速的公共DNS服务。

     想更深入的了解阿里巴巴的DNS系统吗?2017年10月13日上午,杭州云栖小镇,云栖大会DNS专场。我们等你!

目录
相关文章
|
2月前
|
域名解析 缓存 网络协议
DNS问题之服务器流量被攻击如何解决
DNS服务器是负责将域名转换为IP地址的服务,它是互联网上实现域名解析的关键基础设施;本合集将探讨DNS服务器的工作原理、配置方法和常见问题处理,帮助用户理解和优化DNS服务的使用。
42 3
|
5月前
|
Kubernetes Java 双11
抗住双十一!实战Alibaba笔记,深度解析阿里微服务亿级流量治理
随着微服务的发展及DDD领域驱动设计的兴起,越来越多的企业开始使用微服务架构。为了应对微服务化带来的难题,一批微服务组件与应用涌现出来,如辅助问题排查得分布式调用链追踪探针、简化部署运维的Kubernetes,以及本书介绍的熔断器组件等。
|
7月前
|
Kubernetes 负载均衡 网络协议
全网最细,深度解析 Istio Ambient Mesh 流量路径
本文旨在对 Istio Ambient Mesh 的流量路径进行详细解读,力求尽可能清晰地呈现细节,以帮助读者完全理解 Istio Ambient Mesh 中最为关键的部分。
|
网络协议 Python
Python 使用Scapy操作DNS流量
通常一个DNS数据包,客户端发送DNSQR请求包,服务器发送DNSRR响应包。一个DNSQR包含有查询的名称qname、查询的类型qtype、查询的类别qclass。一个DNSRR包含有资源记录名名称rrname、类型type、资源记录类别rtype、TTL等等。
294 0
|
SQL 监控 Java
网站流量日志分析--统计分析--多维统计分析--终端维度--自定义 UDF 解析 UA|学习笔记
快速学习网站流量日志分析--统计分析--多维统计分析--终端维度--自定义 UDF 解析 UA
181 0
网站流量日志分析--统计分析--多维统计分析--终端维度--自定义 UDF 解析 UA|学习笔记
|
SQL 监控 NoSQL
网站流量日志分析--统计分析--sql补充扩展--group by 语法限制解析|学习笔记
快速学习网站流量日志分析--统计分析--sql补充扩展--group by 语法限制解析
145 0
|
SQL 监控 HIVE
网站流量日志分析--数据入库--宽表具体实现2—解析 url|学习笔记
快速学习网站流量日志分析--数据入库--宽表具体实现2—解析 url
135 0
网站流量日志分析--数据入库--宽表具体实现2—解析 url|学习笔记
|
缓存 Java 数据库
从原理到实现,解析万亿流量下的分布式缓存架构
为什么要使用线程池在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。 因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处: (1)降低资源消耗。
1174 0
|
网络协议 Linux C#
NativePayload_DNS,通过DNS流量,绕过防病毒传输后门
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396319 传送门 注意标点符号,必须是英文的。
1403 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多