目录
一、为什么需要TCP加速
二、TCP加速方法简介
1、修改TCP参数
2、新的高效的拥塞控制算法
3、多路径网络传输协议
4、网络编码
5、数据压缩与TCP透明加速代理
6、卸载协议处理任务
一、为什么需要TCP加速
????????首先需要知道为什么要对TCP进行加速?
????????1、在TCP握手阶段TCP连接两端会协商出滑动窗口的大小(window字段,16bit),发送端滑动窗口的大小由接收端的处理性能决定。TCP使用滑动窗口进行流控,但该机制的决定因素在接收端,并没有考虑当前的网络状况。所以很容易出现高速链路到低速链路引发拥塞的现象:如下图所示,发送方经R1、R2两个路由器发送数据,路由器R1与R2之间存在低速链路,其余链路为高速链路。可以看出 R1 路由器成为瓶颈节点,R1左侧快速的接收数据,但其右侧缓慢的发送出去,造成网络拥塞现象。R1->R2链路成为木桶原理中的短板,限制了整体的传输性能。
????????将网络状况引入流控后,TCP中提出了拥塞控制机制以约束发送端的发送速率。目前的拥塞控制算法有很多:RENO、CUBIC和BBR等,但还是无法应对复杂的网络状况变化,可阅读大神的一片知乎文档:漫谈TCP加速的笑话 - 知乎
? ? ? ? 2、高速网络环境下(千兆、万兆带宽),计算机快速接收网络数据,内核需要高频率的执行中断、数据拷贝、数据校验和协议处理操作,对CPU性能需求很大(根据Thumb定律, CPU 每处理 1 bit 网络数据,就将消耗 1 赫兹的处理性能),一定程度上限制了TCP的传输性能。目前的一些优化方法是将TCP的协议处理任务卸载到硬件上执行,释放CPU资源。
二、TCP加速方法简介
? ? ? ? 下面将介绍集中TCP加速方法,是对几篇论文的方法总结,没有详细的去介绍,只是作为科普性的知识点。在介绍每一种方法的时候,我会将论文出处贴在段末,如果您感兴趣可以去找相关论文看看。
1、修改TCP参数
????????如扩大 TCP Window 至 32 bit ,增大发送端的滑动窗口大小极限以提高吞吐量。但缺点显而易见,会使得网络拥塞现象更严重。
2、新的高效的拥塞控制算法
????????尽可能提高发送端的有效发送效率(不造成网络阻塞的情况下最大化发送速率)。具体可以看各类拥塞控制算法(CUBIC、BBR等)和论文《高速网络TCP加速关键技术研究》
3、多路径网络传输协议
????????研发或在原有协议基础上拓展新的多路径网络传输协议。这种方案是提高多宿主机的带宽利用率,如MPTCP传输协议。传统TCP/IP协议架构中,端到端通讯过程中只能使用单路 TCP连接,浪费了多个网络接口的带宽资源。MPTCP传输协议基于TCP进行拓展,一个MPTCP连接下可以存在多个TCP子流并行传输数据,可以有效提高带宽利用率,实现高吞吐量、高稳定性等目的。Home — MPTCPhttp://blog.multipath-tcp.org/blog/html/index.html
4、网络编码
?????????传统网络结构中,中间件不会对数据进行任何处理操作。网络编码的思想是网络中间件对接收的数据包进行线性和非线性的数据编码处理,在转发给下游节点后还原出原始数据包。通过对TCP协议的改进,实现在高丢包率应用场景下传输性能的提升。具体看论文《基于网络编码TCP协议的网络加速系统的设计与实现》
5、数据压缩与TCP透明加速代理
????????把一个端到端的 TCP 连接,利用多个 TCP 中继代理服务器进行转发,分为多个 TCP连接,这样就把一个长肥管道分成了多个短时延的连接。同时在发送端对数据进行压缩,在接收端对数据进行解压,减少网络中的数据传输量。具体查看论文《云服务下的 TCP 加速技术的研究与实现》???????
?????????TCP透明加速代理还有多种不同的加速机制,如:ACK平滑、TCP欺骗、本地重传、数据对比、处理阶段性连接丢失。论文《卫星通信网中 TCP 加速技术研究》3.3.1有简单介绍。
6、卸载协议处理任务
????????将协议处理任务从内核卸载到专门的网络硬件上,如TOE技术。论文《面向TCP加速的协议栈关键技术研究与实现》
|