一种适用于卫星链路的TCP加速方法与流程

文档序号:17428712发布日期:2019-04-17 03:12阅读:479来源:国知局
一种适用于卫星链路的TCP加速方法与流程

本发明涉及卫星网络领域,具体地,涉及一种适用于卫星链路的tcp加速方法。



背景技术:

卫星网络的优势决定了它在未来通信系统中占据越来越重要的地位,利用先进的卫星通信技术与地面网络技术相结合已成为研究热点。传输控制协议(tcp)是互联网中常用的传输层协议,它提供可靠的流量控制和拥塞控制服务。但卫星网络自身的特点限制了tcp在卫星网络中的使用。影响卫星网络性能的因素主要有以下几种:

链路高误码率:

由于卫星网络环境的复杂性,容易受天气等因素影响,链路误码率较地面网络大大提高,传统的拥塞控制机制将数据的丢失认为是网络拥塞引起的,这种机制不再适用于卫星网络。如果没有一种机制正确判断网络拥塞和误码造成的数据丢失,错误地执行拥塞控制机制将对卫星链路的tcp性能产生很大影响。

链路层长时延:

卫星网络链路层传输时延比有线网络大得多,较大的传输时延会减缓拥塞窗口增长的速度,同时,较大的时延变化量也会干扰对rtt的估算,从而影响tcp的定时机制,带来不必要的超时重传,进而错误的改变tcp发送窗口的大小,降低带宽利用率。如果按照卫星链路的rtt来设置超时定时器的话将大大降低卫星链路tcp性能。



技术实现要素:

本发明提供了一种适用于卫星链路的tcp加速方法,为了在卫星网络里有效地使用tcp传输协议,需要执行tcp加速手段来提高tcp的使用性能。本发明提出一种有效的加速方法,采用协议伪应答与基于数据量的拥塞控制机制相结合的方式解决因为长延时及链路高误码率导致的拥塞误判,进而提高tcp的使用效率。

透明传输控制协议(tcp)加速是指提高tcp吞吐量而不需要在终端系统中对tcp协议进行任何改变的技术。针对卫星链路高时延和高误码率的特点,提出一种单双边相结合的tcp加速方法,以改善tcp在卫星链路上的使用性能。该加速方法在卫星网关设置加速器,该加速器一方面向发送端实现协议伪应答;另一方面向远端卫星网关发送数据时采用基于数据量的拥塞控制来实现tcp加速,解决卫星链路存在的拥塞误判。

本申请提供了一种适用于卫星链路的tcp加速方法,所述方法包括:

卫星网络的tcp通信分为3段:发送方终端用户与卫星网关,卫星网关与卫星网关,卫星网关与接收方终端用户;终端用户与卫星网关之间的地面通信采用tcp协议进行通信,在发送端的卫星网关设置网络加速器,网络加速器实现双向加速,一方面卫星网关对终端用户发送的tcp数据采用协议伪应答的方式响应tcp加速传输,另一方面网关与网关之间采用改进后的tcp协议通信,改进后的tcp协议结合传统tcp拥塞控制及基于数据量的拥塞控制两种方式对网络进行拥塞判断。

进一步的,在卫星网关设置协议伪应答,当卫星网关收到发送方的数据时及时响应,让发送方以为收到接收端确认信息。当卫星网络上的包数大于带宽时延乘积时,则认为卫星网络出现拥塞。

进一步的,协议伪应答包括以下行为:

对发送方的即时响应:收到发送方的数据包立即被缓存并确认;

本地重传:当数据包丢失时,发送方启用重传机制;

流量控制:当加速网关的发送速度慢于缓冲区接收速度时,缓冲区空间将填满,不再确认和存储其他数据包。

进一步的,协议伪应答流程具体包括:

卫星网关从发送方接收数据包,判断是否为tcp数据包,若不是tcp数据包,则不作加速处理;若是tcp数据包,则进一步判断是否为syn数据包;若为syn数据包,则进一步判断网关加速器上是否有流记录(流记录为某条链接建立的记录),若有流记录,则回复syn/ack;若没有流记录,则建立流记录,回复syn/ack,保存并转发syn;若不是syn数据包,则进一步判断缓存空间是否可用;若缓存空间不可用,则丢弃数据包;若缓存空间可用,则回复ack,保存并转发数据包,然后判断是否从接收方收到ack,若没有从接收方收到ack,则继续进行判断是否从接收方收到ack;若从接收方收到ack,则释放缓存空间,并判断网关是否从接收方收到fin,若没有收到fin,则回到流程初始步骤;若收到fin,则断开tcp连接,并结束流程。

进一步的,拥塞控制流程具体包括:

建立tcp连接,依靠传统的tcp协议进行数据传输控制,判断卫星网络是否出现拥塞;若卫星网络出现拥塞,则使用基于数据量的拥塞控制算法调整窗口大小和发送速率,然后进一步判断卫星网络是否出现拥塞,若卫星网络出现拥塞,则返回执行步骤使用基于数据量的拥塞控制算法调整窗口大小和发送速率;若卫星网络没有出现拥塞,则返回执行步骤依靠传统的tcp协议进行数据传输控制。

进一步的,基于数据量的拥塞控制算法利用网络加速器不断采集连续时间窗口内的最大带宽bw和最小rtt(rtt是发送一包数据到收到确认回复所花的时间),并以此计算发送速率和窗口大小,该算法通过增益系数调节窗口大小和发送速率,当在一个时间窗口内采集到更大的bw和更小的rtt时,则认为卫星网络支持更大的数据容量,并以它们的乘积,即bdp作为基准,如果没有达到,则认为网络发生了拥塞,调小增益系数,在时间窗口范围内并不改变基准。

进一步的,基于数据量的拥塞控制算法的输出两个值,即窗口大小cwnd和发送速率pacingrate,cwnd规定了当前的tcp最多可以发送多少数据,pacingrate规定cwnd指示的一窗数据的数据包之间,以多大的时间间隔发送出去,其中:

cwnd=bdp*g’,bdp=bw(max)*rtt(min),pacingrate=bw*g

bw是即时带宽,为单位时间内应答的数据个数;

bw=delivered_data/delivered_time

delivered_data为实际应答的数据量;delivered_time为应答delivered_data所需的时间;

bw(max)是时间窗口内最大bw,在tcp连接的持续过程中,每收到一个ack,都会计算即时的带宽;rtt是发送一包数据到收到确认回复所花的时间,rtt(min)连续时间内采集到的最小rtt;g'是cwnd的增益系数,固定值为3/2;g是pacingrate的增益系数。

进一步的,g的取值分以下两种情况:

1、检测到拥塞状态时,g=1/2.8,2.8是启动阶段符合慢启动的增窗指数,出现拥塞时反算到速率增益上;

2、稳定状态时g的取值在5/4,1,3/4之间随机选择。

进一步的,基于数据量的拥塞控制算法流程具体包括:

1、发送网关和接收网关建立tcp连接;

2、发送网关和接收网关依靠传统tcp协议进行数据传输控制;

3、发送网关判断网络是否出现拥塞;

4、如果网络未出现拥塞,则继续依靠传统tcp协议进行数据传输控制;如果出现拥塞,则采用基于数据量的拥塞控制算法控制数据传输(步骤5到步骤7为基于数据量的拥塞控制算法);

5、发送网关不断采集连续时间窗口内的最大带宽bw(max)和最小rtt(min),并以此计算发送速率(pacingrate)和窗口大小(cwnd):

cwnd=bdp*g’,

bdp=bw(max)*rtt(min),

pacingrate=bw*g

g'是cwnd的增益系数,固定值为3/2。g是pacingrate的增益系数。如果连续一段时间窗口内采集到的rtt均比系统已保存的最小rtt更大,很可能网络内发生了拥塞;

6、检测到拥塞状态时,g=1/2.8。2.8是启动阶段符合慢启动的增窗指数,此时数据包以较低的发送速率发送出去;

7、稳定状态时g的取值在5/4,1,3/4之间选择。达到稳定状态后,为了探测更多的带宽,可以调大增益,即5/4,另一方面,对于偶尔出现的拥堵,则采用3/4进行收敛,减慢发送。

本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:

由于采用了伪应答,当卫星网关收到tcp数据后即执行回复并将数据存储在缓存中,由于减小反馈延迟,终端设备能更快地对tcp流分组丢失做出反应,从而实现更高的吞吐量。同时,由于本发明转变了对于卫星网络中对于拥塞的判断标准,定义当网络上的包数大于bdp(带宽时延乘积)时,则认为出现了拥塞。根据收到的确认包,发现有效带宽不再增长时,就进入拥塞避免阶段,实现了最大化利用网络带宽的作用。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定;

图1是卫星网络结构示意图;

图2是基于协议伪应答的tcp加速连接示意图;

图3是协议伪应答流程示意图;

图4是拥塞控制算法流程示意图;

图5是基于数据量的拥塞控制算法流程示意图。

具体实施方式

本发明提供了一种适用于卫星链路的tcp加速方法,为了在卫星网络里有效地使用tcp传输协议,需要执行tcp加速手段来提高tcp的使用性能。本发明提出一种有效的加速方法,采用协议伪应答与基于数据量的拥塞控制机制相结合的方式解决因为长延时及链路高误码率导致的拥塞误判,进而提高tcp的使用效率。

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

本发明提出的针对卫星网络的tcp加速方案将通信分为3段:终端用户与卫星网关,卫星网关与卫星网关,卫星网关与终端用户。网络结构图如图1所示。

其中,终端用户与卫星网关之间的地面通信仍然采用tcp协议进行通信,网关对终端用户发送的tcp数据采用协议伪应答的方式响应tcp传输。网关与网关之间采用改进后的tcp协议通信,此处结合传统tcp拥塞控制及基于数据量的拥塞控制两种方式对网络进行拥塞判断,避免错误的拥塞判断影响tcp传输效率。该设计完全兼容现有的网络应用配置,用户终端系统不需要针对tcp协议进行任何修改即可使用。

为实现tcp加速,在卫星网关设置网络加速器,该加速器配置在发送端网关。该网络加速器实现双向加速功能,即面向发送方通过协议伪应答实现tcp加速,面向下一卫星网关采用基于数据量的拥塞控制,保证tcp的高效传输。

卫星网络通信长时延的问题主要出在卫星网关与卫星网关之间。如果能在卫星网关设置协议伪应答,当卫星网关收到发送方的数据时及时响应,让发送方以为收到接收端确认信息,进而可以避免卫星网络长延时的问题。

标准tcp中的拥塞控制算法是不断增加发送窗口,直到发现开始丢包。当收到一个确认消息的时候慢慢增加发送窗口,当确认一个包丢掉的时候较快地减小发送窗口。将丢包作为拥塞的信号,从而大幅降低发送速率。卫星链路存在较高的误码率,如果采用传统的tcp协议进行通信,往往由于检测到较高的丢包率而启动拥塞控制机制,因此降低发送速率,但实际上网络并未出现拥塞,因而浪费大量带宽资源。本发明中的算法,不考虑丢包,而是定义:当网络上的包数大于bdp(带宽时延乘积)时,则认为出现了拥塞。本发明中的算法根据收到的确认包,发现有效带宽不再增长时,就进入拥塞避免阶段。该方式可以有效利用网络带宽,避免资源浪费。

协议伪应答:

该功能针对终端用户与卫星网关之间的通信。tcp是一种速率自适应协议,而反馈回路是tcp协议确定发送速率和重传机制的依据,是tcp实施过程中必不可少的部分。协议伪应答的作用是为了减少反馈回路中的延迟。即使在理想条件下(没有包丢失,不考虑带宽的情况下),重传依然存在。重传的反馈时间越短,网络性能就越高。卫星通信的时延主要来自于卫星网关与卫星网关之间。在卫星网关上安置网络加速器,将用户与网关之间的tcp数据终止在卫星网关上,当卫星网关收到tcp数据后即执行回复并将数据存储在缓存中,由于减小反馈延迟,终端设备能更快地对tcp流分组丢失做出反应,从而实现更高的吞吐量。基于协议伪应答的tcp连接图如图2所示。

协议伪应答主要包含以下行为:

对发送方的即时响应:收到发送方的数据包立即被缓存并确认。

本地重传:当数据包丢失时,发送方启用重传机制。由于两个连接的rtt较短,超时时间可以更快地检测到丢包。

流量控制:当加速网关的发送速度慢于缓冲区接收速度时,缓冲区空间将填满,不能再确认和存储其他数据包。这时发送方检测到数据包丢失并减慢速度。

对于终端用户来说,引入tcp加速方案后,终端系统与传统的tcp连接(除了分组顺序和性能之外)没有任何区别,这样,终端系统不需要做任何修改即可实现tcp加速。协议伪应答流程图如图3所示。

基于数据量的拥塞控制:

卫星网络比有线网络存在更大的传输时延,这必然会影响tcp的定时机制。用户发送完数据包后会等待ack,如果网络存在较大时延会影响rtt(收到确认信息所花的时间)估算,带来不必要的超时重传,会影响发送端对网络状态的判断,进而错误地改变窗口发送大小,降低带宽利用率。同时卫星信道的误码率本来就比较高,如果将数据包的丢失误认为是网络拥塞造成的,从而启动拥塞控制机制,降低发送速率,结果造成带宽资源的浪费。

针对卫星链路较大时延和较高误码率的特点,本发明提出了一种新的tcp拥塞控制方案,以解决传统tcp在卫星链路上使用时拥塞误判等问题。本发明在卫星网络这段链路上采用基于数据量的拥塞控制机制,无论外部tcp处在哪个阶段,该拥塞控制算法都可以完全控制传输多少数据以及以什么速率传输数据,这意味着可以区别噪声丢包和拥塞丢包了,而噪声丢包是无线链路特别是卫星链路传输的显著特点。如果是噪声丢包,在收到重复ack后,由于算法并不区分一个确认是ack还是sack引起的,所以即使出现数据包丢失,即时带宽并没有降低,可能还有所增加,过程中并不会受到任何tcp拥塞状态的影响。

拥塞控制方式分为两个阶段,即正常阶段和异常阶段。在正常阶段中,依靠传统的tcp控制算法对窗口进行调整,对应tcp的慢启动阶段;在异常阶段中,即依靠传统tcp拥塞控制算法检测到拥塞时,采用基于数据量的拥塞控制算法控制窗口的变化。拥塞控制方式如图4所示。

基于数据量的拥塞控制算法原理:

传统tcp协议中,影响tcp拥塞控制算法最重要的因素就是窗口大小。它决定了当前的系统最多可以发送多少数据,但它并没有规定怎么把这么多数据发出去,如果把cwnd一窗数据全部突发出去,而这往往会造成数据包排队,在深队列的情况下,会测量出rtt剧烈地抖动。

基于数据量的拥塞控制算法不但要考虑发送窗口大小(cwnd),还要考虑发送速率(pacingrate)。该算法利用网络加速器不断采集连续时间窗口内的最大带宽bw(max)和最小rtt

(min),并以此计算发送速率(pacingrate)和窗口大小(cwnd),pacingrate规定了cwnd指示的一窗数据的数据包之间,以多大的时间间隔发送出去。该算法通过增益系数(g’,g)调节窗口大小和发送速率。一旦在一个时间窗口内采集到更大的bw和更小的rtt,就认为网络支持更大的数据容量,并以它们的乘积,即bdp作为基准,如果没有达到,则认为网络发生了拥塞,调小增益系数即可,但在时间窗口范围内并不改变基准。由于增益系数是根据反馈调节的且基准bdp不变,一旦拥塞缓解,可以第一时间发现并增大增益系数。

基于数据量的拥塞控制算法实现方式:

算法的输出主要有两个值,即窗口大小(cwnd)和发送速率(pacingrate),cwnd规定了当前的tcp最多可以发送多少数据,pacingrate规定cwnd指示的一窗数据的数据包之间,以多大的时间间隔发送出去。

cwnd=bdp*g’,bdp=bw(max)*rtt(min),pacingrate=bw*g

bw是即时带宽,为单位时间内应答的数据个数,不管该应答是重传后的ack确认,正常ack确认,还是sack确认,都统一计算,都认为是数据量的反映。

bw=delivered_data/delivered_time

delivered_data为实际应答的数据量;

delivered_time为应答delivered_data所需的时间。

bw(max)是时间窗口内(默认10轮采样)最大bw。在tcp连接的持续过程中,每收到一个ack,都会计算即时的带宽。

rtt是发送一包数据到收到确认回复所花的时间,rtt(min)连续时间内(默认10秒)采集到的最小rtt,直接采用冒泡法采集最小的rtt。如果连续一段时间窗口内采集到的rtt均比系统已保存的最小rtt更大,很可能网络内发生了拥塞。

g'是cwnd的增益系数,固定值为3/2。g是pacingrate的增益系数。g的取值分以下两种情况:

1、检测到拥塞状态时,g=1/2.8。2.8是启动阶段符合慢启动的增窗指数,出现拥塞时反算到速率增益上。

2、稳定状态时g的取值在5/4,1,3/4之间随机选择。达到稳定状态后,为了探测更多的带宽,即时利用其它tcp连接清空的带宽,可以稍微调大增益,即出现了5/4,另一方面,对于偶尔出现的拥堵,则采用3/4进行收敛,减慢发送,总体而言,整体速率是趋于匀速的。该方案不断地基于当前带宽以及当前的增益系数计算pacingrate以及cwnd,以此2个结果作为拥塞控制算法的输出,其简图如图5所示。

标准tcp是通过不断增加发送窗口,直到发现开始丢包的方式来估算发送窗口的,在连接的开始阶段,网络缓存区会被倾向于占满。后续网络缓存区的占用会逐渐减少,但是并不会完全消失。客户端估计的发送窗口大小总是略大于网络中缓冲区的。网络缓存区里面的缓存的数据越多,数据排队等待发送的时间就越长;共享网络瓶颈的连接较多时,可能导致缓冲区被填满而丢包。

本发明中的算法,不关注丢包,只要链路的错误丢包率只要不太高,对本发明中的算法没有影响,可以在有一定丢包率的网络链路上充分利用带宽。当发送速率增长到开始占用网络缓存的时候,有效带宽不再增长,这样就不会把缓冲区填满。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1