一、什么是TCP加速?
TCP加速就是在高时延链路提高吞吐量的一系列解决方案。
二、为什么需要对TCP进行加速?
1、传统的TCP拥塞控制算法并不适用于高时延、高误码的链路。
2、随着web元素的丰富,用户量的增加对交互时延和处理能力的要求越来越高。
3、对资源和合理配置,提高网络带宽利用率的需求。
以同步卫星通信场景为例讲解1
卫星通信的传输时延是因为卫星在36000公里的高空,电波的从地面到卫星再回到地面的时间大约是0.27秒(30万公里/秒)。这就是所谓的卫星通信的传输延时。
实测来讲:卫星的传输时延远大于理论值,同步卫星天地往返时延在500ms以上,链路较差是在600ms-800ms之间波动。
实际测试:在时延500ms、时延抖动较小的情况下,TCP连接不做加速时传输速率为空口带宽(卫星口最大传输能力)的30%-40%。例:10Mbps的带宽最大只能利用3Mbps-4Mbps,其余资源被浪费。
三、如何对TCP加速?
如何对TCP进行加速业界并没有一个标准,但有一系列的推荐方法。详细可阅读 RFC 3135
现在最常用的方法是: TCP透明代理 + 算法优化
TCP透明代理(TCP加速的核心思想)
原理:就是利用一些手段在内核或者协议栈捕获TCP报文,将TCP报文送入TCP加速器中处理并在处理完成后将报文头部还原并继续转发。
好处:1、透明代理可以把端到端的TCP分割为几个部分,这样就可以根据每个部分的丢包、时延情况进行不同的优化,从而提高TCP的性能。
2、TCP加速器将一端的连接终结,然后重新发起一个连接到另一端。这样两端的数据包都被缓存在两端的TCP加速器上,TCP加速器之间的数据发送由加速器自行控制。
算法优化
原理:利用透明代理机制,在加速器之间或加速器与Server端之间修改或优化算法,使用更适用链路特点的算法可以事倍功半!
单边加速:只需要在tcp的一端部署的加速技术(绝大多数都是优化tcp的拥塞控制算法)
优点:部署容易,变动较小,应用范围广,研发厂商多算法丰富多样。
缺点:必须兼容标准的TCP协议,优化调整点不如双边多。
双边加速:双端部署
优点:可以采用更高效的传输协议,数据缓存,流量压缩,多路径转发
缺点:部署较为麻烦,必须双端部署;如果是客户端需要安装相应软件工具
注意!!!
上述所说的TCP加速方法只能提高TCP连接的带宽利用率不能提高TCP连接的建链速度等;简单来说就是不能提高你访问网页的速度,只能提高你下载文件的速度!
如果想提高HTTP的访问速度请选择压缩等方法
------------------------------------------------------------------------
注:如果想进一步研究TCP加速的优化方案建议研究RFC3135
卫星通信行业的大佬 休斯的TCP加速就是按照RFC 3135做的
之前和小伙伴们研究了一下
RFC 3135 大致有这几块(PEP就是TCP透明代理)
1、TCP ACK处理: TCP PEP 基于TCP ACK操作
2、TCP ACK间距: ACK间隔用于平滑遍历链路的TCP确认流
3、本地TCP确认: PEP接收的TCP数据段由PEP本地确认
4、本地TCP重传:本地重传在TCP PEP和接收端系统之间的路径上丢失的数据段
5、TCP ACK过滤和重建:通过过滤链路一侧ACK,并在链路的另一侧重建已删除的ACK来解决由于不对称链路产生的拥塞问题
6、隧道:封装消息以跨特定链路传送消息或强制消息遍历特定路径,封装隧道另一端的PEP在最终传送到接收端系统之前移除隧道封装器 (中间链路使用UDP传输就是这种)
7、压缩:压缩各部分简要需要通过链路的字节数
8、处理与TCP断开链路的周期:TCP发送方未收到预期的确认,在重传定时器到期时会导致TCP关闭其连接
9、基于优先级的附庸:通过缓慢且昂贵的链路实现基于优先级的数据复用,可以显著提高所选应用或连接的链路性能和可用性
10、协议助推器机制:如UDP错误检测、奇偶校验分组数据包、发送PEP添加时间戳来延迟分组一边接收端重现正确的间隔