关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

CDN干货!史上最全的内容分发网络实战技巧

发布时间:2017-05-26 21:49:52

嘉宾介绍

白金,ChinaUnix 资深版主,曾担任《iptables 高级使用研讨》讲师,精通iptables模块的开发和netfilter内核开发,擅长协议识别技术及网络攻击防御技术。

直播实录

大家好,我叫白金(真名),很高兴今天来给大家做个分享。在 CU 混了大概 10 年,ID 是 platinum,原在蓝汛(ChinaCache)工作,现在在光载无限,目前担任架构部总监的职位。

今天来给大家分享下关于 CDN 的东西,以及我自己的一些发现、一些个人的拙见。总共分为 3 个部分:原理、详解、各种坑。

CDN干货!史上最全的内容分发网络实战技巧

首先说一下 CDN 的基本原理部分,主要分 4 块来描述:CDN 的由来、调度是怎么做的、缓存是什么、关于安全。

CDN干货!史上最全的内容分发网络实战技巧

最初刚有互联网的时候,带宽用量不多、用户少,并不存在什么问题,后来随着发展,逐渐出现了使用量大、访问缓慢的情况。最初 95 年的时候,有两个博士试图通过利用数学的办法来解决动态路由问题,且效果还不错,这便是 Akamai 的前身,也是全球第一个CDN 公司。98 年中国成立了国内第一家 CDN 公司,蓝汛,ChinaCache,很荣幸我曾在这个公司任职,群里也有好多前蓝汛的同事们,也有很多现还在蓝汛的同事。

CDN干货!史上最全的内容分发网络实战技巧

“什么是CDN?”

这是一个做过 CDN 之后的拓扑图,里面有几个概念需要明确一下:

Origin Server: 源站,也就是做 CDN 之前的客户真正的服务器;

User: 访问者,也就是要访问网站的网民;

Edge Server: CDN 的服务器,不单只“边缘服务器”,这个之后细说;s/\(单\)只/\1指/;

Last Mile: 最后一公里,也就是网民到他所访问到的 CDN 服务器之间的路径。

我们平时所使用的DNS服务器,一般称之为LDNS,在解析一个域名的时候,一般有两个情况,一种是域名在DNS上有记录,另一种情况是没有记录,两种情况的处理流程不一样。

当你访问163这个域名时,如果LDNS上有缓存记录,那它会直接将IP地址直接给你。如果没有缓存记录,它将会一步步向后面的服务器做请求,然后将所有数据进行汇总交给最终的客户。

当你访问163这个地址时,实际上如果本身没有内容的话,它要去后面拿数据,这个过程术语叫递归,它首先会向全球13个根域服务器请求,问com域名在哪,然后根域服务器作出回答,一步步往下,这个过程较复杂,如果大家感兴趣可去查相关资料,在这就不一一赘述。

“DNS调度”

肯定很多人好奇是如何进行调度和进行定位的?

其实也是通过LDNS的具体地址来进行的,比如,看图,假设你是一个广东电信客户,那你所使用的DNS服务器去做递归的时会访问到某一个CDN厂商的GRB,全球的一个调度系统,他就能看到来自于哪个LDNS。假设如果用户和LDNS使用同一个区域的服务器,他就会间接认为用户也是广东电信的。

再举个例子,比如说北京联通的用户,它使用DNS地址,一般自动给它分配的是北京联通的服务器,这个服务器去做递归的时候,调度服务器就会看到这个请求是来自北京联通的LDNS服务器,就会给它分配一个北京联通的服务器地址,然后让来自北京联通的用户直接访问北京联通的服务器地址,这样来实现精准的区域性调度。

从这个调度理论上看,我们可以发现一个问题,就是假设用户所使用的LDNS地址和你是同一个区域,那么这个时候我们的调度才有可能是正确的。但是举个例子来说,如果你是北京联通的用户,可是使用的是广东电信的LDNS的话,就会让GRB系统误以为你是广东电信的客户,这样就会错误的调度过去。

之前有一次我在小区里上网,由于我的路由器有问题,我设了202.106.0.20的北京联通的DNS服务器地址,后来出差去深圳,访问比较大的网站发现比较慢,经过分析,才发现原来我设的DNS地址是北京联通的,而我在广东和深圳使用的网络都是电信接入的,但是分配给我的是北京联通的地址,那我用电信的线路访问北京联通的地址,势必就会很慢。


/template/Home/Shiwaix2/PC/Static