随着互联网技术的发展,运营商的非对称网络质量和ICP(内容提供商,也就是网站主)的内容分布不均匀导致了网民上网访问质量较低,ISP(互联网服务商)运营商为了改善自有接入网民的服务质量,开始代替ICP去做内容分发,将互联网内容引入或拉取缓存到离网民最近的IDC机房,来保证网民访问互联网的体验,由此催生了像蓝汛、浩瀚、网宿、华为等为运营商提供内容缓存的厂商进行对应的产品服务;
目前,运营商缓存主要有如下调度和实现手段:
1、配置LDNS,将需要加速的域名进行forward到加速厂商的DNS解析服务器,内容加速厂商将需要做加速的网站解析到离网民最近的IDC机房的缓存设备,网民直接从最近的IDC机房的缓存设备获取资源,避免运营商内跨骨干出省甚至跨运营商访问内容;
2、加速厂商监听网民的DNS请求报文,对网民发起的DNS请求报文进行抢先于授权DNS进行重定向应答,将网民的域名解析指向到离网民最近的运营商内的IDC机房的cache服务器,加速网民的访问;
3、加速厂商监听网民的HTTP的GET请求,将抢先源站返回给网民302回应,将网民访问请求引导到离网民最近的IDC机房的cache服务器,加速网民访问大文件下载及视频;
4、加速厂商监听网民对p2p的tracker请求,将网民的请求的peer保留网内的资源和IDC网内资源,保证网民p2p请求(目前称为:p4p)能够从网内快速获取;
5、服务厂商对网民使用非运营商自己下发的LDNS的情况就行纠正,如果遇到网民使用非LDNS进行DNS解析的情况,服务厂商对解析结果进行纠错DNS-ER(Schedule Domains Names System Error LDNS Redirect),保证网民的请求解析结果都是LDNS的解析结果,保证网民的访问请求不出网请求来保证网民上网访问速率;
这几年,出现了新的加速方案也既透明缓存和半透明缓存,这种机制跟如上集中情况不一样,缓存软件具有一定的隐秘性;所谓的透明缓存,就是网民看不到缓存的地址,源站可以看到cache服务器的ip地址;所谓半透明缓存,就是源站和网民都看不到cache存在,只是网民访问内容加快;
目前这种机制以两大阵营为代表:以PeerApp为代表的,基于包检测的缓存机制和以浩瀚为代表的基于url及http header头的缓存检测机制;这里以透明缓存为例讲解两者的实现方式和区别:
透明缓存的实现,两种缓存机制都需要具备如下条件[也就是因为这个局限,所以此种缓存的部署层级往往在地市级别或者规模相对较小的运营商出口]:
I、缓存系统需要能够监听整个接入地区的所有链路;
II、网民的上行请求需要通过策略路由到缓存系统;
III、网民的下行请求(也就是源站回应网民的请求)需要通过策略hash路由到缓存系统;
PeerApp的缓存机制如下,网民发起三次握手的时候,缓存系统不进行干扰,当网民发起GET请求,源站回应了数据报文后,缓存系统会将报文数据到缓存索引进行查询,当查到索引内容之后,从缓存直接取数据,伪造源站符合tcp校验协议给客户端发送数据;
浩瀚深度的缓存机制如下,网民发起tcp的syn请求,数据报文到达缓存;缓存系统收到握手请求报文只有,模拟源站回应网民的握手请求(使用源站的地址),而网民的syn请求到达缓存也终止了,不会转发给源站;网民收到缓存的模拟回应syn/ack报文之后,回应ack报文成功建联【其实报文也是终止在缓存】;网民端向源站发起GET请求,报文到达缓存之后,缓存查询网民的GET url本地是否有已经缓存的并且未过期的内容,有则直接模拟伪造源站返回给网民;当缓存本地没有找到对应的内容的情况,缓存会模拟网民对源站进行tcp握手,然后模拟网民发起HTTP请求将内容取回,然后再返回给网民;
透明缓存的整个过程中,对网民的交互,模拟的为源站的ip地址;对跟源站的交互,模拟的是网民的ip地址;PeerApp的实现方案的弊端在于每次网民请求都需要跟源站进行建联,这会带来很大的开销;浩瀚的方案可以对tcp握手时延和首包时延都会带来很大的改善;PeerApp的方案每次都会跟源站校验,这样快速更新的内容在源站一更新缓存就更新了,浩瀚的方案则是根据源站给的header头信息进行缓存,当源站给的过期时间到达之后,再有新的网民请求,缓存会跟源站进行校验;PeerApp的方式,容易导致缓存提供内容错误,比如文件前半段相同,后半段不同容易导致网民拿到错误的文件(支持根据peerapp的实现机制猜测,此处不确定,但是从运营商处的反馈来看,确实存在内容提供错误的情况);浩瀚的实现方案是根据url+header进行存储判断的,弊端是url不同内容相同的极端情况下,缓存平台会存储两份产生冗余;
目前来看,透明缓存是运营商缓存的出路,这样既不产生版权纠纷,也可以对网民上网质量带来提升;不同的实现技术有段有不通的优点,以以上两大厂商为代表的两大实现方案可以针对不同场景进行适应;