一名CDN老兵的分享

大家好,我是网宿科技的郭文强。

很高兴在这里和大家分享一些CDN行业的经验,先简单地介绍下我自己~

我是08年加入网宿的,目前担任网宿CDN产品总监,主要负责企业应用加速、网站加速几条线的CDN加速产品。

在CDN架构设计和数据分发领域积累了几年的工作经验,我也算是一个CDN行业里的老兵了。今天我就以一个老兵的身份和大家来分享自己在这个行业的一些经验,欢迎随时拍砖和提问交流:)下面我就正式开始哈。

08年我刚加入网宿的时候,互联网的发展还远不如现在,有很多体验的制约问题,进入网宿后,我们就在着手来解决网络体验糟糕的问题。

当时国内CDN也处于很早期的阶段,一开始我们也遇到很多坑,早期CDN技术是以空间换时间的技术,通过靠近用户端的缓存来换取网络传输时间的减少,只能做静态内容加速。

但2008年的时候,Web2.0已经很普及了,许多个性化的数据是需要跟源站进行交互的,当时国内网络环境不是很好,这些交互数据都要跨越互联网上最遥远的距离(你在电信,我在网通),体验就会特别差。对于这个问题国内CDN厂商都没有比较好的解决办法。

传统动态加速的方案采用双线机房或BGP方式来解决,这样的方式只能在一定程度上缓解跨运营商访问的问题,对于长肥骨干网的传输低效问题没有比较好的解决方法。

再一个,当时路由和传统传输协议也都比较古老,无法适应动态数据的高效传输。我们针对这些问题进行逐个分析,在传输协议、路由算法、动态应用等方面仔细琢磨,在10年5月推出了一个动态加速技术。

这个技术是通过智能路由探测获得最佳访问路径,改造传统TCP协议的拥塞控制、重传算法等技术最终实现整体传输速度的提升,它可以解决动态数据在国内网络传输的问题。当时解决了很多电商网站体验不好的问题,因为电商网站的搜索、放购物车,验证码这些都是动态数据,体验不好,对购买的转换率影响还是挺大的。

QQ截图20160128164116.jpg

这是动态加速的一个产品图。网宿WSA通过在全国CDN各个节点均部署专用的服务器组成WSA加速平台,用户请求通过网宿全球负载均衡中心解析接入网宿WSA加速平台,平台自动进行动静态内容分离加速。静态文件如图片通过智能缓存由WSA边缘节点就近直接响应给用户,动态文件如查询通过网宿DAA动态加速技术实现快速与源站交互获取响应,通过智能动静态分离加速实现全站加速,提升用户访问体验。

12年随着移动互联网的兴起,移动网络它比固网的传输问题更大,我们有一个经验数据,互联网传输的70%时延是出现在移动网络,固网传输只占30%。而且和PC不一样,移动终端更复杂,性能、屏幕大小区别太大。所以对企业来说,移动端又多很多更难搞的问题,比如电商图片需要针对不同终端做多种样式,工作量大、存储管理需求。

所以在这个需求上,我们又开始考虑在动态加速解决方案上,增加移动端的很多个性化需求,帮源站解决终端适配、对移动网络协议针对性的协议优化,根据不同网络制式和终端的网络情况自动适配算法,解决到移动端的传输问题。

到2013年,IPv4地址分配耗尽,又出现新的问题,怎么让网站和用户之间在IPV4与IPV6双向兼容,很多网站需要一个低成本的解决方案。所以我们在用户和网站之间搭建了一个智能转换的平台,源站不需要做任何事情,只要接入这个平台,让IPV4或IPV6的用户都能自由的访问IPV4或IPV6的网站。

所以可以说是,最初的一个动态加速,在适应互联网变化的需求,不断的在思考怎么解决动态数据在网络传输中的各种问题。

动态数据需要和源站进行交互,需要源站的数据库来产生。很多大公司,比如BAT在数据库上投入了大量的资源,对数据库进行优化,来不断的减少数据库计算的时间。

但从我们和客户的实际交流中会发现,有很多银行、证券、家电制造业的传统企业,它是做不到像BAT一样投入很多的资源来去做数据库的优化,所以他们在数据库的计算上遇到的问题就更大。就迫切需要一种办法来解决数据库计算时间过长的问题。

最后我们想到了异步的方式,可以将数据库响应时间对页面加载时间的影响减到零。这个技术,我们叫动态流传输,我们也为这个技术在中国与美国都申请了专利。

除了不断的去改善动态数据的传输速度,另外,保证网站内容的安全也是非常重要的一点。网站内容安全涉及到多个方面,比如盗链、劫持和攻击,针对这些问题,我们利用时间来做时间戳防盗链,利用HTTPDNS来防劫持,通过流量清洗和高防集群来防攻击。

但是对于篡改,CDN只能解决CDN内部和CDN到源站两块,要实现端到端全程的防篡改是比较困难的,所以我们会建议客户通过HTTPS来解决篡改。其实我们从服务客户的经验来看,也发现越来越多的客户开始采用HTTPS协议,来提高网站安全性。

https协议比普通的http协议流量大,而且因为要加密解密,所以传输会更慢一些。早期,很多客户为了保证安全评级,是宁愿牺牲网站访问体验,不给https做CDN加速的。但是发现不做加速,网站用户访问体验很差,这对于很多网站来说是致命的,你安全是保障了,但是用户干脆不用了。那怎么办呢。

2011年,针对这个问题我们就想了一个办法:给客户开发个加密客户端,让客户通过客户端对私钥进行加密,私钥通过加密后上传到网宿CDN节点,加密的密码掌握在客户自己手上,部署过程由客户通过后台自主实现。

同时,这个过程中,为了打消客户的安全顾虑,增强CDN系统本身的安全性,我们申请并且通过了全球最严格的PCI DSS认证。

但是,所谓道高一尺,魔高一丈,Openssl协议在安全运作多年后在2014年爆出发像业界有名“心脏出血”漏洞等事件,我们就在思考,现在的网络发展太快了,而且爆发出来的攻击也越来越多,私钥部署在CDN系统上,尽管他是加密的,但还是会有风险的。

而且也不段有客户从这个角度给我们提更高的需求,所以我们又开始想一个更安全的办法来解决HTTPS的传输问题。怎么可以不拿私钥,又能提供CDN加速给客户,保证网站的访问体验。

于是我们做了一个叫做 “无证书驻留HTTPS加速方案”,简单地说,就是实现了客户不用提供证书给我们,也能够实现HTTPS加速。

这是无证https加速的一个原理图。

QQ截图20160128164158.jpg

它的具体实现是:



1A:用户发起https请求,进行ssl握手,公钥加密客户端生成随机密码后发往CDN节点。



1B:CDN节点与私钥服务器建连,通过加密的方式将客户端发来的公钥加密的随机密码发往源站的私钥服务器,私钥服务器通过私钥解密获得随机密码,然后再将随机密码通过加密返回给CDN节点。

2A:CDN节点和终端用户双方都拥有随机密码,即可以正常通信发送加密数据。



2B:CDN节点回源请求则再与源站真实服务器建立https连接获取网站内容。

这对于很多顾虑将https证书提供给第三方的银行啊,金融支付的企业来说,就可以更放心的来做CDN加速。

最后,想分享一个做CDN的感悟。区别于做别的产品,CDN相对是一件满寂寞的事情,为什么,服务太靠后了,大家感知不到,而且现在很多新的创业公司,新技术、领先、智能硬件各种,都能吸引很多的眼球。CDN不是,它一定是一个跟随性的业务。

一定是等某一个互联网业务起来了,CDN再去为它服务,解决它带来的传输问题,让它能发展好,从这个层面上来说,做CDN不是一件吸引眼球的事情,很寂寞。

即使技术很厉害,也很难被人了解。这两点也是网宿一直在坚持的。也是网宿能做到今天很重要的一点。

好,谢谢大家,我的分享到这里。接下来是互动时间,看看大家有什么问题,可以交流一下~

问答环节:

问:除了https,CDN还有其他手段来对抗运营商劫持和dns劫持么?



答:dns劫持可以采用HTTPDNS的方式来解决,运营商的劫持一般发生在小运营商。



我们统计了下,全国大约有190多家小运营商,在其中的160家中网宿都有节点,保证网宿的客户不受劫持影响,另外三十多家我们通过HTTPDNS来解决。



同时,我们跟全国dns服务管理员维护着比较好的关系,当我们的客户出现DNS被投毒和劫持的时候,我们可以协助解决。



所以,CDN也是一个符合二八定律的行业,花20%的投入就能解决80%的问题,剩下的20%的问题需要花额外80%的投入才能解决。



例如,为了 应对DNS攻击,我们将我们的dns服务能力提升到10亿qps。

虽然我们有大量的加速域名,但正常情况下我们的dns请求数不到20万qps,为了应对攻击我们也投入巨大,愿意为保障客户投入更多的资源和成本。

问:网宿有没有在研究P2P的数据下载加速?类似迅雷星域那种?



答:1、P2P技术我们一直在CDN里头在使用,P2P技术的好处在是针对大文件的传输优化上是非常好的,尤其是像视频类大文件类的传输,我们一直都在视频传输方案、下载的传输方案上都有所使用。但它并不适用于全场景,比如网站加速、图片类。



2、大规模的P2P面临着复杂的管理问题:上行带宽使用过多会造成链路层面的拥塞,对控制能力要求很高。内容管控面临风险。篡改用户内容相对容易。信息安全方面,用户端的抗攻击能力也肯定不如CDN节点。



最后,用户端的网络环境和终端能力都是相对不稳定的,P2P节点服务会受限于家庭端能力和网络环境,而且P2P节点多,对调度能力是非常大的挑战,所以P2P节点相对于CDN节点,它服务的稳定性和调度效率还有待实践考证。

对于企业级客户而言,对服务质量、安全和稳定要求都是很高的,所以P2P的服务模式,目前来看还有待验证。

问:现在的研究和应用情况如何?



答:现在的应用和研究情况,您指的是我们的还是迅雷的?如果是我们的:对于目前我们服务的客户而言,我们认为CDN现有的IDC节点的服务方式是最可靠并且是最稳定安全的,所以我们目前采取的是这种方式。P2P只能作为有限的补充,我们不认为P2P方式能够占据太大的比重。而针对家庭端越来越大的重度应用需求,我们更倾向的做法是社区云的方式,将CDN节点下沉至社区。

问:如果源站在国内,通过用海外cdn节点,能解决海外用户访问体验? 另外一些国际大公司网站,他们是多站点,还是一个源站+cdn?



答:基本上国际大公司网站都是主备源站+CDN的模式,当然也有国际大公司在国内设立中文站+CDN服务

问:最后我们想到了异步的方式,可以将数据库响应时间对页面加载时间的影响减到零。这个技术,我们叫动态流传输。这个是否可以解释一下,具体解决的是哪个场景,加速后效果区别?



答:举个例子,电商的订单页面,源站数据库处理时间是5秒,内容传输10秒,如果不用这个方案,加速后,内容传输时间变为5秒,用了这个方案后,整体时间可压缩到5.1秒。

问:阿里云等公有云的CDN有跟网宿合作吗?



答:像七牛、金山、联想、UCLOUD、腾讯等云厂商跟网宿都有合作。我们通过和这些公有云厂商合作积累了非常多的公有云服务经验,你要不要也来试下。

问:10亿qps是什么解决方案?用服务器累么?



答:首先是提升单机能力,采用Intel DPDK和多队列网卡,我们可以让DNS服务器的万兆网卡跑满,在这基础上再做一些服务器集群,分区DNS等等。