一、什么是TCP加速?



 



TCP加速就是在高时延链路提高吞吐量的一系列解决方案。



 



二、为什么需要对TCP进行加速?



 



1、传统的TCP拥塞控制算法并不适用于高时延、高误码的链路。



2、随着web元素的丰富,用户量的增加对交互时延和处理能力的要求越来越高。



3、对资源和合理配置,提高网络带宽利用率的需求。



 



以同步卫星通信场景为例讲解1




testpmd实现高速转发_重传


卫星通信的传输时延是因为卫星在36000公里的高空,电波的从地面到卫星再回到地面的时间大约是0.27秒(30万公里/秒)。这就是所谓的卫星通信的传输延时。


实测来讲:卫星的传输时延远大于理论值,同步卫星天地往返时延在500ms以上,链路较差是在600ms-800ms之间波动。


实际测试:在时延500ms、时延抖动较小的情况下,TCP连接不做加速时传输速率为空口带宽(卫星口最大传输能力)的30%-40%。例:10Mbps的带宽最大只能利用3Mbps-4Mbps,其余资源被浪费。


 


三、如何对TCP加速?


 


如何对TCP进行加速业界并没有一个标准,但有一系列的推荐方法。详细可阅读 RFC 3135


 


现在最常用的方法是: TCP透明代理 + 算法优化 


 


TCP透明代理(TCP加速的核心思想


testpmd实现高速转发_链路_02


原理:就是利用一些手段在内核或者协议栈捕获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添加时间戳来延迟分组一边接收端重现正确的间隔