SPDY代理省流技术的架构

基本架构

Opera Turbo技术让浏览器可以压缩浏览过程中非加密的图片内容,从而减少网络流量和提升加载速度(需要Turbo服务器的网络多线高度优化)。不过由于这一技术局限在浏览器中,并不方便使用。其实可以考虑基于OpenWRT实现一个类似的东西。

网络架构如下图所示:

1587764912.png

路由器上可以有一个程序嗅探并劫持明文HTTP流量,利用端口号和请求内容侦测把HTTP请求识别出来,通过SPDY通道发给Proxy Server处理。Proxy Server负责HTTP请求原始资源,利用其优质的网络连接和强大的服务器计算能力把请求回来的图片压缩缓存下来,并对客户端提供响应。

一些细节

当用户发送TCP SYN到80端口的时候就可以开始劫持流量,可能需要在内核模块上挂钩子完成任务,可以看看libcap和redsocks库是否可用。

和代理服务器间使用SPDY协议通信,保持长连接主要是为了得到它的多路复用的好处,少维护一点TCP连接,毕竟一般运行OpenWRT的设备内存都不大,服务器也可以从减少连接数中受益。

Proxy Server的前端使用SPDY,后端可以直接使用开源的HTTP代理程序加入压缩模块。如果不考虑复杂的认证(认证可以利用SPDY环节的TLS客户端证书功能完成),可以优先考虑基于polipo等轻量级的HTTP代理实现。

图片压缩环节可以考虑支持GPU加速的库,使用CUDA或者OpenCL实现,当然前提是压缩服务器上有显卡。可以将SPDY代理模块和HTTP压缩模块划分到不同的服务器硬件上组建集群。


以上只是基本架构的考虑,尚没有具体实现,之前计划基于Socks服务器实现一个原型,时间关系并没有完成。

标签: none

添加新评论