一、什么是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添加时间戳来延迟分组一边接收端重现正确的间隔

TCP加速机制是如何加速的?的更多相关文章

  1. 通俗易懂讲解TCP流量控制机制,了解一下

    上篇文章讲了TCP拥塞控制机制的原理,没看过的不妨看下:5分钟读懂拥塞控制,这篇文章讲讲TCP流量控制机制. 一.为什么需要流量控制? 双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发 ...

  2. TCP/IP 笔记 - TCP保活机制

    TCP协议中不存在轮询机制,这意味着加入启动一个客户端进程,与服务器建立连接后,然后离开几小时.几天.甚至几个月,连接依然会保持着.理论上,中间路由器可以崩溃和重启,数据线可以断开再连接,只要连接两端 ...

  3. go依赖包下载加速方法及github加速

    go依赖包下载加速方法及github加速 对于https://github.com/kubernetes/kubernetes整个仓库大小为近900M,下载起来那个伤心: 方法一:使用码云 这是码云上 ...

  4. TCP拥塞控制机制

     研究TCP的拥塞机制,不仅仅是想了解TCP如何的精巧,更多的是领悟其设计思想,即在一般情况下,我们该怎样处理问题.   一.拥塞的发生与其不可避免    拥塞发生的主要原因:在于网络能够提供的资源不 ...

  5. tcp窗口机制(写的最简单精炼的文章)

    tcp窗口机制(写的最简单精炼的文章) http://blog.csdn.net/occupy8/article/details/48468445

  6. TCP重传机制的学习应用

    1. TCP重传机制 TCP协议是一个可靠的协议.发送方每次发送一个数据包,需要等到ACK确认包再继续发送. 发出去的请求包在规定时间内没有收到ACK,不管是请求包丢失,还是ACK包丢失,还是网络延迟 ...

  7. python网络编程05 /TCP阻塞机制

    python网络编程05 /TCP阻塞机制 目录 python网络编程05 /TCP阻塞机制 1.什么是拥塞控制 2.拥塞控制要考虑的因素 3.拥塞控制的方法: 1.慢开始和拥塞避免 2.快重传和快恢 ...

  8. TCP KeepAlive机制理解与实践小结

    0 前言 本文将主要通过抓包并查看报文的方式学习TCP KeepAlive机制,以此加深理解. 1 TCP KeepAlive机制简介 TCP长连接下,客户端和服务器若长时间无数据交互情况下,若一方出 ...

  9. Debian 9 / Debian 10 / Ubuntu 18.04 / Ubuntu 18.10快速开启BBR加速 或 关闭BBR加速

    如果使用的是Debian 9.Debian 10.Ubuntu 18.04.Ubuntu 18.10等内核高于4.9版本的系统,均可以使用此方法开启BBR加速,若你使用了Ubuntu 19.04的系统 ...

随机推荐

  1. Vue.js 是如何实现 MVVM 的?

    目录 框架到底为我们做了什么? 如何理解 MVVM ? 如何实现 MVVM - 以 Vue.js 为例 Vue 如何实现响应式 Vue 如何解析模板 Vue.js 运行机制 手写一个 Vue.js 框 ...

  2. 球体的双目视觉定位(matlab,附代码)

    球体的双目视觉定位(matlab,附代码) 标签(空格分隔): 机器视觉 引言 双目视觉定位是我们的一个课程设计,最近刚做完,拿出来与大家分享一下,实验的目的是在拍摄的照片中识别球体,并求出该球体到相 ...

  3. 3D echarts 点位报表展示

    一,准备工作1)获取Echarts 以下为官网推荐的几种获取 ECharts方式: 从官网下载界面选择你需要的版本下载,根据开发者功能和体积上的需求,我们提供了不同打包的下载,如果你在体积上没有要求, ...

  4. 简单的scrapy实例

    前天实验室的学长要求写一个简单的scrapy工程出来,之前也多少看了点scrapy的知识,但始终没有太明白,刚好趁着这个机会,加深一下对scrapy工作流程的理解.由于临近期末,很多作业要做(其实.. ...

  5. [apue] dup2的正确打开方式

    管道与重定向常常需要使用dup与dup2复制句柄,其中dup2又较为常用,但是使用dup2有几个小坑需要注意. int dup2(int oldfd, int newfd); man手册页上是这样讲的 ...

  6. 【PostgreSQL】 前缀模糊查询级优化

    前匹配模糊 使用B-Tree来加速优化前匹配模糊查询 构造数据 新建一张商品表,插入一千万条数据. create table goods(id int, name varchar); insert i ...

  7. 并发编程-concurrent指南-阻塞队列-链表阻塞队列LinkedBlockingQueue

    LinkedBlockingQueue是一个基于链表的阻塞队列. 由于LinkedBlockingQueue实现是线程安全的,实现了先进先出等特性,是作为生产者消费者的首选. LinkedBlocki ...

  8. SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面

    前言 SpringBoot对所有内部日志使用通用日志记录,但保留底层日志实现.为Java Util Logging.Log4J2和Logback提供了默认配置.在不同的情况下,日志记录器都预先配置为使 ...

  9. POJ 3621:Sightseeing Cows(最优比率环)

    http://poj.org/problem?id=3621 题意:有n个点m条有向边,每个点有一个点权val[i],边有边权w(i, j).找一个环使得Σ(val) / Σ(w)最大,并输出. 思路 ...

  10. Git使用小技巧之挑拣合并

    先想想一个情况,现在我们有一个功能急需要发布到线上,但是这个功能相关的代码所在的测试分(test)支有很多不应该发布的代码,那么这个时候我们就需要将与这个代码相关的提交选择性的合并到master上并发 ...