免备案CDN服务商经常引用独立第三方公司的拨测数据来证明自己的免备案CDN服务更好。虽然这些数据在某个区域或时间段也许是准确的,实际却是盲人摸象,无法证明全时段和全网CDN服务的真实性能。也许从免备案CDN服务商所处的网络环境和提供的技术功能入手,会是更科学和公平的对比方法。
用户终端访问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,跨运营商的数据传输时间也会比只有一个运营商的相对快些。就如同有多个高速公路的通行证,数据在传输过程中从一家的路面后就可直达用户,而不用来回在多个道路上切换,避免了不必要的时间损耗。
浏览CDN服务商的网站,收集关于CDN加速的功能介绍,得到对比项一。
通过nslookup查询他们域名对应的IP,使用美国Hurricane Electric公司提供的网页工具(https://bgp.he.net/)查寻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厂商还不支持。