作为技术决策者在选择使用 CDN 服务时最关心的三个问题是:一,哪家的 CDN 更快(速度快,用户体验好)。二, 哪家 CDN 功能最全,即使现在用不到也不会给将来业务发展挖坑。三,怎么付费最划算。本文通过分析对国内 CDN 市场占有率靠前的十家服务商的网络环境和技术服务,希望给大家提供一些启发和建议。
哪家的 CDN 更快?
CDN 服务商经常引用独立第三方公司的拨测数据来证明自己的 CDN 服务更好。虽然这些数据在某个区域或时间段也许是准确的,实际却是盲人摸象,无法证明全时段和全网 CDN 服务的真实性能。也许从 CDN 服务商所处的网络环境和提供的技术功能入手,会是更科学和公平的对比方法。
国内用户普遍使用互联网提供商 (ISP) 的宽带上网,具体访问流程如下图:
图 1
用户终端访问 CDN 的过程分两个步骤, 一是用户通过 DNS 找到最近的 CDN 边缘节点 IP; 二是数据在网络中的送达用户终端。整个过程中,有三个方面会影响用户访问 CDN 的体验。
一,拥有 DNS 优化策略的 CDN 提供商,会有更好的用户体验。
从图 1 可见, 客户终端的 DNS Resolver 负责告诉浏览器到哪里去找 CDN 的资源。理论上 ISP 的 DNS 服务器会选择离用户最近 CDN 节点 IP 并返回给用户,但是实际情况并不是这么简单。国内的大城市的 ISP 业务,除了一些区域性的 ISP,基本被联通、电信和移动这样的大运营商所垄断。由于各运营商之间存在着网间费用结算,运营商会想尽一切办法将用户的访问在自己的网内解决掉。比如,广州联调宽带的用户想访问的内容在联通北京的 CDN 节点, 尽管在广东移动的 CDN 节点有用户想访问的资源,联通的 DNS 还是会返回联通北京 CDN 节点的 IP。
另外,一些 ISP 为了节省网间流量,未经 CDN 服务商同意,自己针对一些 CDN 文件做了一层 CDN 缓存,通过“DNS 劫持”把用户访问 CDN 资源的请求都指到自己网内的非法 CDN 缓存服务器。很多时候这些缓存的内容不能及时和 CDN 节点同步更新,会造成使用该 ISP 的用户终端出现访问 CDN 资源缓慢,失败等现象。同时,国内严重的 DNS 污染问题也影响了用户的上网体验。
因此,如果能使用一些技术优化用户 DNS 查询,会大幅度提高用户的体验。目前优化 DNS 的技术主要是:
HttpDNS :客户端基于 Http 协议向 CDN 服务商指定的 DNS 服务器发送域名解析请求,从而避免 LocalDNS 造成的域名劫持和跨网访问。如图 2
图 2
Http 302 跳转: CDN 厂商维护 CDN 域名 IP 库,根据用户访问终端的 IP 和 CDN 边缘节点的状态,选择最合适的 CDN 节点,发出 HTTP 的 302 返回码,将用户的请求跳转到合适的 CDN 边缘节点。例如腾讯的下载直通车就使用类似技术。 图 3
图 3
二,拥有自治系统(Autonomous system, AS)的 CDN 提供商,数据包跨越最少的网络边界,能获得更快的传输速度。
在 BGP 协议中,IP 包从一个 AS 向另一个 AS 传输时,需要经过边界路由器,如果由于网络问题造成 IP 包不可达,则需要边界路由器重新规划线路。如果 CDN 服务商自己拥有自治系统,AS 内部拥有同样的选路策略,数据就能在 CDN 服务商自己的 AS 中高效传输,理论上最终送达用户所花的时间也会最小。 就好比我们开车在省内玩,肯定要比跨多个省经过多个收费站耗时要少。
三, CDN 服务商所在自治系统 AS 的相邻 AS 越多,离运营商骨干网越近,数据传输也会更有优势。
CDN 服务商所在的 AS 离运营商骨干网 AS 越近,理论上数据包传输所花时间也越少。另外, CDN 厂商如果同时租用了多个运营商品牌的带宽线路,其服务器的 IP 就会同时属于这几家运营商的 AS,跨运营商的数据传输时间也会比只有一个运营商的相对快些。就如同有多个高速公路的通行证,数据在传输过程中从一家的路面后就可直达用户,而不用来回在多个道路上切换,避免了不必要的时间损耗。
对比结果
选取 IDC 评述网排名前十的 CDN 服务商,采用以下方法收集数据:
浏览 CDN 服务商的网站,收集关于 CDN 加速的功能介绍,得到对比项一。
通过 nslookup 查询他们域名对应的 IP,使用美国 Hurricane Electric 公司提供的网页工具查寻 AS 号码和其相关联的相邻域所属的运营商得到对比项二和三。
以上数据收集方法存在如下假设:
CDN 厂商把自己的主站建在和自己 CDN 同一个 AS 内,没有租用其它厂商的主机。如果厂商连自己的主站都不使用自己的产品,只能说明他们对自己的产品都没有信心。
CDN 厂商把对于 DNS 优化的功能都公布在互联网上。在竞争激烈的 CDN 行业,厂商都希望对外宣传自己的亮点,不存在酒香不怕巷子深的说法。
注:第 9 位的世纪互联的网站对其 CDN 服务的介绍很少,无法获取需要的信息,增补了第 11 位的京东云。
对比结果如下表 1:
表 1
阿里云,腾讯云和网宿科技由于支持 HttpDNS 在技术上有领先优势,可以列为第一梯队。第二梯队的是百度云,蓝讯,Ucloud 和网易云。它们所在 AS 和两个以上运营商主干网 AS 相邻,也具有一定优势。剩下的金山云,七牛云和京东云排在第三梯队。金山云所在 AS 只和电信骨干网 AS 相连,使用其它运营商的用户访问其 CDN 节点理论上会相对电信的慢一些。七牛云和京东云其网络属于北京电信通的 AS,需要穿过两个 AS 才接入骨干网,理论上速度也会比其他 CDN 服务商稍慢。
哪家 CDN 功能最全
CDN 服务的功能点非常多,为了比较方便选择了 11 个常用的功能,主要覆盖加速优化,监控和安全三个方面:
加速优化
HTTP2.0 加速
HTTP2.0 和现在的 HTTP1.1 相比,做了很大的改动和优化,例如头部压缩、服务端推送等。因为它要求服务器端和浏览器端都得支持 HTTP2.0 协议,所以在国内获得普遍支持还有一段时间。不过作为互联网下一代 HTTP 协议,即使我们现在用不上,也应考虑为将来的系统升级留下余地。
文件压缩
目前 CDN 节点使用的 WEB 服务器端普遍支持 GZIP 协议的压缩, 当用户浏览器访问静态资源,并且支持 Gzip 压缩时, 服务器端可以把资源压缩打包发送给浏览器,由浏览器进行解压, 减少文件在互联网传输的数据量和时间。
源站推送
为了避免传统的 CDN 节点同时去源站拉数据,造成访问洪峰压垮源站的带宽和服务器。 CDN 厂商使用源站推送功能将源站内容提前推送给边缘 CDN 节点,提前进行刷新预热。
点播加速
CDN 对音视频等流媒体文件进行加速,其背后是一套复杂的技术方案,包括上传,转码,分发,以及 CDN 边缘节点根据用户终端支持协议的情况下发合适的流媒体格式。不同 CDN 服务商对点播加速的技术实现方案不同,不好做量化比较,只用是否支持播加速功能来比较。
直播加速
直播加速如何解决播放延时、连麦时多路音视频的合并、以及突发热点对带宽的冲击等这些技术挑战,对 CDN 服务商的技术、硬件和网络条件都有很高的要求。也用是否支持直播加速来比较。
监控统计
实时监控
CDN 服务商提供图形化工具,对 CDN 的使用情况,例如点击量,命中率,公网下行流量等进行统计和监控。方便客户对于 CDN 使用效率和结果进行评估,及时发现问题和调整网络带宽预算。
原始日志
提供所有客户终端访问 CDN 服务的原始日志 (access log),这些日志看似没用,其实很有价值。例如,可以通过分析原始日志的数据包总量估算出 CDN 实际的下行流量,作为支付 CDN 服务费的参考。也可以通过分析这些日志的响应时间,结合客户端 IP,评估各地区终端用户实际访问 CDN 的情况。
安全
防盗链
CDN 服务商防盗链的手段很多,例如常用的 http Referer 防盗链,其原理是利用 http header 中的 referer 属性,判断用户提交信息的网站 IP 地址,然后和真正的源站端的地址相比较,如果一致则表明是站内提交,或者为自己信任的站点提交,否则视为盗链。
IP 黑白名单
黑白名单是我们可以根据业务需要对用户请求的源 IP 访问进行管理,为我们提供了主动防御的能力。使用 IP 黑名单的功能,可以有效的帮助我们阻止盗链,和恶意攻击。
SNI ( 服务器名称指示 Server Name Indication )
网站使用 SSL/TSL 协议校验是目前防止盗链,和解决 “DNS 劫持”最好的方式。目前国内外大型网站都已经换成了基于该协议的 HTTPS 通信方式。早期的 SSL 协议默认每个 IP 地址上只能用一个证书。TLSv1z 增加了服务器名称指示(SNI)功能,通过发送虚拟主机名作为 TLS 协商的一部分这使得服务器可以在握手阶段选择正确虚拟域,并发送对应证书。这样每个 IP 上可以部署多张证书,对于运行很多虚机和域名的用户会非常节省资源。如果 CDN 服务商支持该项功能,说明 CDN 服务支持 HTTPS 和 TSL v1 以上版本。
OCSP 装订(OCSP STAPLING)
使用 SSL 认证时,客户端会在 TLS 握手阶段,去发证机构对实时查询 OCSP (Online Certificate Status Protocol,在线证书状态协议)接口,来判断服务器端的证书是否作废。在获得获得 OCSP 结果前会阻塞后续流程,通常发证机构都在国外,客户端的访问会延迟整个 TLS 握手的时间。而 OCSP Stapling 功能,是指服务端在证书链中封装了发证书机构对证书的 OCSP 查询结果,从而让客户端浏览器跳过自己去验证的过程。如果 CDN 服务商支持该功能,说明其 CDN 服务支持 HTTPS 加速比较好。
对比结果
对前文的十家 CDN 服务商进行打分,结果如下表:
表 2
腾讯云和网宿科技得分最高,其它厂商各有优劣。 9 分以上的厂商占了前 50%,分别是腾讯云,网宿科技,阿里云,百度云蓝汛。后 50% 的厂商分数在 8-7 分之间。
哪家的性价比更高
计费方式:
目前业内普遍使用的 CDN 计费方式有两种:每按带宽峰值和按流量。
带宽峰值计费
每 5 分钟统计一个带宽峰值(单位 Mbps),每日得到 288 个峰值,取当日带宽峰值作为结算标准。计费周期普遍采用按日计费,每日零点扣费。
按流量计费
按照每月使用的实际流量作为结算标准。价格普遍采用阶梯定价。计费周期普遍采用按月计费,每月最后一天零点扣费。也有一些厂商采用按日计费或按小时计费和扣费。
对比结果
各厂商收费标准如下表:
表 3
注:有些 CDN 厂商会对包月的大客户提供优惠,本文不做对比。
按峰值计费 10 家厂商有 6 家支持,3 家不支持,1 家网上没有公开价格。500M-5G 带宽平均市场价格在 0.69 元 Mbps。峰值带宽计费低于 0.69 元的厂商有 4 家,分别是阿里云,腾讯云,百度云和金山云。按流量计费的 9 家支持,1 家网上没有公开价格,10T-50T 阶梯的平均流量价格是 0.25 元 /G。流量计费低于 0.25 元 /G 的厂家有 5 家,分别是阿里云,腾讯云,蓝汛,金山云和七牛云。
哪种计费方式更合算
以 1Mbps 带宽作为计算如下:
1Mbps = 128KB/s.
128KB/s = 7680KB/minute (7.5MB/minute).
7680KB/minute = 460800KB/hour (450MB/hour).
460800KB/hour = 11059200KB/day (10.54gb/day)
通过计算,1Mbps 带宽的网络,一天 24 小时跑满的话可以消耗约 10.5G 的流量。以网络利用率占峰值的 10%,20%,25%, 30% 为参数计算使用峰值带宽和按流量计费的花费对比,结果如下表:
表 4
通常大家都会选择按流量计费。但是如果带宽的实际利用率大于 30% 后,实际花费的钱是小于实际消耗的流量计费模式的。 例如我们使用 50Mbps 峰值带宽每天花费 34.5 元. 如果 CDN 利用率大于 30%,使用的实际流量为 131.25G 对应流量计费要花费 39.38 元,按峰值宽带计费会更划算。
单链链接限速
使用峰值宽带计费大家普遍的担心是被恶意攻击造成短时间内巨大的峰值,以峰值来计算整天的费用非常不划算。使用单链接限速可以避免这样的问题。所谓单链接限速,就是在 CDN 边缘节点的 WEB 服务器上,设置限制单连接的下载速度,使其最高速度限定在预设值内。该功能可在保障用户访问体验的同时,在一定程度上平滑带宽值,合理节省带宽成本。不过国内现在只有网宿科技宣称支持该功能,其它 CDN 厂商还不支持。
总结
回答了关于 CDN 服务商的速度、功能和价格三个问题,哪家的性价比最高呢?最后做一个综合比较:
速度评分中,第一梯队的记 3 分,以此类推第二梯队 2 分,第三梯队 1 分。
功能评分中,大于 9 分的 CDN 服务商得 1 分,其他不得分。
价格评分中,峰值带宽计费 500M-5G 带宽低于平均市场价格 0.69 元的 CDN 服务商得 1 分,流量计费低于 0.25 元 /G 的得 1 分。
结果如下:
表 5
阿里云和腾讯云 6 分并列第一,在 CDN 服务上优势明显。百度,网宿科技,蓝讯都是 4 分并列第二,百度价格有优势,网宿科技在访问速度上有势,蓝讯各方面比较平均。金山云列第三。其他 CDN 服务商得分小于 3 分,不到总分(6 分)的 50%,在 CDN 行业的竞争中处于劣势。