APP下载

一种战术通信系统TCP协议双端代理加速方法设计

2019-08-05李红卫蒋祖星

舰船电子工程 2019年7期
关键词:传输速率控制算法链路

李红卫 蒋祖星

(广东交通职业技术学院 广州 510800)

1 引言

TCP协议(Transport Control Protocol)是一种端到端的、基于连接的、可靠的传输层控制协议。通过端到端的有序数据传输与反馈机制,为上层应用提供了可靠的数据传输保障。

战术互联网络的协议结构比较复杂,它涉及到物理层、数据链路层、网络层、传输层以及应用层所使用的网络协议和接口[1]。TCP协议是保障可靠通信的关键部分,对于利用网络进行通信的两个终端来说,端到端通信的可靠性最终还是要由传输控制协议来解决。

图1 TCP数据传输丢包与窗口变化示意图

传统的TCP协议是为有线网络设计的,适用于差错率低的有线网络。与有线网络相比,无线网络通常表现出误码率高、多径传输、移动终端的频繁移动等特性,而战术互联网这些特性则体现的更为突出[2],如图1所示。这使得传统的TCP协议直接用于战术互联网环境下时性能很差。所以如何提高TCP协议在战术互联网中的性能成为重要研究课题。

2 TCP协议传输速率影响因素

影响TCP传输速率的因素包括两个方面:1)TCP协议所采用的算法、缓存大小等;2)网络自身的状况,包括最大传输速率、传输时延和丢包率等。

2.1 TCP协议影响

1)ACK机制

传统的TCP协议采用的是积累ACK反馈机制,如果出现丢包,则持续反馈丢包前收到的数据的最后的序号(实际上也为丢失包的起始序号)。这导致在长时延的链路中,发送方在接收到丢包的ACK后的一个RTT的时间内,都只能知道接收方已收到丢包前的数据。SACK(选择确认)通过在TCP选项中告知发送端已经收到的多个数据报区间,以此向发送端通告丢包、乱序等网络状况的出现。显然相比采用积累ACK反馈机制,当出现丢包时,发送端能够更及时地判断网络状况以调整发送速率。

在许多针对卫星链路的TCP传输优化中,使用了SNACK技术。SNACK与SACK的作用是相似的,但是SNACK向发送端反馈传输序列中出现空洞,这与SACK正好相反。在Linux内核中默认开启SACK选项,但还没有SNACK模块可被使用。在SCPS_TP的实现中,使用了SNACK,其与SACK的性能比较还需要进一步探究[3]。

2)拥塞控制算法

TCP协议所采用的拥塞控制算法决定了当传输序列出错(丢包、乱序)时,TCP的发送窗口的变化情况。传统的TCP协议采用了Reno算法,该算法假设丢包皆由网络拥塞导致,这在有线信道上是有效的,但是在无线信道上难以获得良好的传输效率。当前的Linux内核默认采用Cubic算法,该算法通过提高小窗口发送速率,尽早占用可用带宽,同时减缓大窗口发送速率,延缓拥塞发生时间[4]。在PEPsal中推荐使用Vegas算法作为长时延链路的TCP拥塞控制算法,Vegas算法核心在于将传输速率独立于时延差异,使长时延对链路的影响由响应的拥塞控制参数补偿。其他拥塞控制算法还包括Veno、Westwood、HSTCP等。

由于链路特性的不同,相适应的拥塞控制算法也不同,因此应当针对战术通信网络的特点来选择合适的拥塞控制算法。

3)窗口缓存

TCP协议通过窗口缓存的大小来控制数据传输的速率。在数据传输过程中,TCP协议通过拥塞控制算法来调整窗口的大小,同时系统也设置了对于窗口缓存的限制。可以通过简单计算,得出在一定网络条件下,达到一定发送速率所需的窗口缓存下限。在无差错的链路中,无论采用哪种ACK机制,发送端只有收到接收端的ACK反馈才能进行窗口移动;假设网络往返时延为RTT,若期望的发送速率为S,则发送窗口只有大于S*RTT才能持续保持S的发送速率。若在链路中出现一个丢包,发送端在1/2*RTT时间之后才能进行重传,若采用积累ACK机制,发送端在丢包后的3/2*RTT时间才能够获知新的ACK反馈并进行窗口调整。如图2所示,此时占用发送窗口的数据量为2*RTT,因此采用积累ACK机制,出现丢包时,发送窗口需要至少2*RTT*S才能维持S的发送速率。若在丢包后的RTT时间内再次丢包,则发送窗口大于2*RTT*S才能维持S的发送速率。

若改用SACK或SNACK,由于在通告丢包的同时,也对后续的数据包进行了确认,发送端能够更及时地调整发送窗口,因此,使用较小的发送窗口即可维持较高的发送速率[5]。

图2 TCP数据传输丢包与窗口变化示意图

4)其他扩展选项

TCP协议的一些扩展选项也有助于提高TCP传输效率。(1)窗口扩大选项:如果要使用大于2^16Bytes的窗口,需要在连接建立时通过窗口扩大选项来进行协商。(2)时间戳选项:时间戳选项使发送端在每个报文段中放置一个时间戳值,接收方在确认中返回这个数值,从而允许发送方为每一个收到的ACK计算RTT。对于部分拥塞控制算法,如果能够获得精确的RTT值,则能够进行更有效的拥塞控制。

2.2 网络状况影响

网络状况在此主要考虑三方面的因素:1)链路最大速率;2)链路往返时延(RTT);3)链路丢包率。这三方面会对TCP连接的传输速率产生综合性的影响。

链路速率和往返时延的增大都增加链路中数据的容量(更宽或更长的管道),如2.1节所述,发送端维持发送速率所需的发送窗口缓存大小与链路中容纳的数据量直接相关。在丢包率一定的情况下,链路中容纳的数据报越多,也意味着单位RTT时间内丢失的包也越多,对于采用SACK或SNACK机制的TCP连接,SACK或SNACK能够通告的丢包数量是有限的(因为TCP首部选项长度有限),如果RTT时间内丢包数量超过限度,则不得不因为发送窗口缓存的耗尽而降低发送速率[6]。在TCP拥塞控制算法的研究中,给出了传输速率、传输时延、拥塞窗口与丢包率之间的关系。其中传输速率、传输时延、拥塞窗口之间的关系为。其中x(t)、w(t)及T(t)分别表示时间t时的传输速率,窗口大小和传输时延RTT。

由上述关系可知,在时延增大的情况下,维持相同的传输速率所需要拥塞窗口更大,所期望的丢包更低。

3 民用TCP加速代理

如第2节中所述,在异构网络中,需要依据不同的网络环境设置合适的TCP配置,才能获得良好的传输效率。由于TCP的连接和传输控制过程并不依赖于上层应用,仅需要TCP首部中的信息,因此可以在异构网络中链路中插入代理节点,将TCP连接分为多段,在不同的网络中针对网络特性配置TCP参数,提高不同网络中的传输效率[7]。使用TCP代理优化的优势还包括:1)逐段可靠保障:由于需要在代理两侧的网段上分别建立了TCP连接,因此在代理节点实际对TCP数据报进行缓存,也即实现了TCP数据的逐段可靠保障;2)链路状况隔离:一条连接所经过的链路可能有不同的MTU,传输速率等,连接只能适配所有链路的最差情况,选择最小的MTU和最低的传输速率;通过代理进行TCP分段,能够屏蔽不同链路的差异,选择适合当前链路配置进行传输。

3.1 单边代理优化

单边代理优化是仅在链路中靠近发送端一侧加入TCP代理优化节点(或模块)。通常通过配置优化的TCP拥塞控制算法来提高发送端的TCP传输效率,例如在长距广域互联网中使用FastTCP、ZetaTCP等模块以提高TCP速率。PEPsal(PerformanceEnhancingProxyforSatelliteLink)是针对卫星链路长时延特性进行TCP代理优化的软件,其设计作为可单边插入发送侧,为包含卫星链路的长时延侧进行TCP代理优化的软件。PEPsal本身仅包含建立和维系TCP连接的功能,TCP传输及拥塞控制依然交由Linux内核中的TCP协议栈。通过实验测试,配置TCP协议栈使用Vegas拥塞控制算法,在一定丢包率情况下能够获得比Cubic算法更好的TCP传输效率[8]。

图3 PEPsal单边加速部署图

单边代理优化的优势在于,配置简单,仅需要在发送端进行配置。其劣势在于仅能对TCP协议中的拥塞控制算法进行修改,由于ACK机制和窗口缓存大小需要接收端配合,因此无法修改。对于广泛使用的WindowsXP操作系统,其默认仅支持基础的TCP协议,如积累的ACK机制和16位的拥塞窗口,这导致了单边代理无法使用SACK/SNACK机制、更大的窗口缓存以及时间戳等配置来提高TCP的传输效率。

3.2 双边代理优化

为了克服单边代理优化的劣势,在特殊链路的两端,均配置TCP优化代理,将TCP连接分为三段。在包含特殊链路的TCP连接段,由于两端均使用优化代理,因此能够针对特殊链路的特性配置TCP协议,使该段的TCP传输效率最大化。SCPS_TP(SPACECOMMUNICATIONSPROTOCOL SPECIFICATION——TRANSPORTPROTOCOL)是针对卫星链路传输设计的TCP代理,通过对代理两侧设置不同的TCP协议选项对长时延的卫星链路进行TCP传输优化[9]。SCPS_TP与PEPsal在实现上的差异在于,SCPS_TP不依赖Linux内核的协议栈进行传输和拥塞控制,由程序本身进行控制。SCPS_TP默认使用SNACK作为可选的ACK机制,同时可对TCP协议的其他多种参数进行配置。PEPsal设计作为单侧优化代理,但其也可作为双端优化代理,经实验验证,对PEPsal所运行的Linux内核进行优化配置,其作为双端代理也能获得相比单侧优化更好的传输性能。

图4 SCPS_TP双边加速部署图

3.3 SCPS_TP与PEPsal比较

SCPS_TP与PEPsal最大的区别在于,SCPS_TP所有的对数据报的操作均在用户层实现,这使得SCPS_TP对TCP数据传输有更强的控制能力。可以针对两侧链路配置不同的窗口缓存、拥塞控制算法以及MTU等参数,也可以对在双端SCPS_TP内传输的数据报进行压缩、加密等操作。同时由于SCPS_TP在用户层进行数据报获取,SCPS_TP也可以对部分UDP数据报进行压缩、聚合等优化操作。

PEPsal依赖于Linux内核的Netfilter模块获取数据报,同时依赖于Linux内核的TCP协议栈进行TCP连接的传输和拥塞控制。PEPsal的优势在于,能够灵活运用Linux内核中的特性对数据传输过程进行处理[10]。例如利用Netfilter进行数据过滤,可以仅对特定源IP的TCP传输进行优化;可以在Linux内核中加载更多种的TCP拥塞控制算法,以针对不同的链路特性使用最合适的算法。

SCPS_TP双端代理实验结果与理论预期相符合。由表1中结果项1、2、3比较可知,RTT增大时,需要增加窗口缓存才能维持较高的传输速率。由结果项4、5、6比较可知,在出现丢包时,窗口缓存需要大于2*RTT*S,才能维持较高的传输速率。由结果项4、5、7比较可知,采用SNACK能够在每个RTT时间内丢包2个以上也能够维持较好的传输速率。

表1 SCPS_TP双端代理实验测试

表2 SCPS_TP双端代理限速2M测试

表2比较了SCPS_TP作为双端代理且限速2Mbps情况下,不同拥塞算法、缓存和丢包率时的传输速率。可以看出,由于Vegas算法考虑了多竞争拥塞,因此在单一代理的情况下,速率调节不如pure算法激进;同时使用pure算法时,增大缓存能够在丢包率提升时维持传输速率。

表3 PEPsal双端代理实验测试

PEPsal双端代理试验中主要比较了不同拥塞控制算法对传输速率的影响。由实验结果可知,在无丢包的情况下,采用两种不同的拥塞控制算法均可以获得非常高传输速率,但当出现丢包时,Vegas算法能够获得相比Cubic算法更好的传输速率。

表4 PEPsal双端代理限速2M测试

4 双端加速代理设计

4.1 应用模式设计

战术网络环境部署范围广,异构网络种类繁多,为了获得良好的端到端TCP传输效果,需要考虑充分屏蔽异构网络之间的差异性,对数据传输过程进行逐段优化,最终实现端到端数据传输效率的优化与提升。

图5 TCP加速模块的组织应用模式

战术无线网络环境两方面的特性使得使用单边代理加速优化难以获得良好的效果:1)网络终端难以统一:战术无线互联网络中所使用的网络终端种类繁多,每种终端的TCP协议配置可能存在差异;包括WindowsXP系统在内的终端操作系统默认仅对TCP的非扩展协议提供支持,导致单边代理无法使用TCP的协议扩展来提高TCP传输效率。2)网络异构性导致一条连接通过不同类型的链路:由于战术无线互联网络采用异构组网的方式,一条TCP连接可能经过多种不同类型的链路,单边代理难以对多种不同类型的链路匹配最优的拥塞控制算法,导致单边代理无法获得良好的加速效果。因此在战术无线互连网络中,对于不同类型链路采用双端代理优化才能获得良好的链路适应性,提高TCP传输效率。

将TCP加速代理嵌入至战术无线信道两侧的通信设备,可以对经过战术无线信道的TCP数据流进行加速处理。如图5所示,在基站节点及接入节点同时部署通用无线链路TCP加速模块,可以对经过RAP接入网的从电台网至骨干网的TCP数据流进行加速。

4.2 软件架构设计

TCP加速模块的软件设计架构如图6所示。主要包含的子模块及其功能有:

图6 TCP加速代理软件架构

1)数据收发与业务识别模块:需要不同的产品平台实现不同的网络数据包收发接口,并识别接收数据包的协议及业务信息;对TCP协议的数据包转发至TCP代理管理模块进行处理;对非TCP协议的数据包直接在数据收发模块进行转发;

2)TCP代理管理模块:通过对接收到的TCP数据包进行分析处理,对TCP数据流状态进行维护;并依据TCP数据流状态进行欺骗ACK反馈、数据重传、保活检测等操作;

3)TCP双端加速模块:对需要发送的TCP数据进行缓存、发送窗口限制及发送速率控制;改变传统TCP依据拥塞窗口进行发送速率控制导致对丢包敏感,无法高效利用无线信道带宽的问题;

4)TCP断链续传模块:检测当前TCP数据流的连接状态,在电台通信较长时间不通畅时暂停数据传输;在电台数据通信恢复时更好的进行数据重传;

5)多连接TCP动态分配模块:依据预配置信息或电台上报带宽信息,为经过无线链路的TCP数据流进行动态带宽分配;同时对TCP的带宽需求进行感知,避免分配时浪费带宽;

6)公共适配模块:通过对不同平台系统调用API进行封装,实现TCP加速模块的通用跨平台可移植性。

4.3 关键技术与突破

4.3.1 TCP协议分段代理技术

TCP协议通过端到端的可靠连接为端到端的数据传输提供保障。在战术异构网络环境中,由于端到端连接可能存在经过多种网络传输信道,如在骨干网采用卫星、微波等信道,在接入网采用高速电台等信道,在野战指挥部采用以太网等信道,可能导致采用端到端的TCP协议无法针对多种网络信道环境进行适配,传输效率较低。

图7 TCP协议分段代理技术图

TCP协议分段代理技术,打破了TCP的端到端连接,将不同的网络信道分割开来,使得在不同异构网络能够有针对性地对TCP协议进行传输优化,提高端到端的整体传输效率。TCP协议分段代理技术原理图如图7所示,其原理是:

TCP连接管理,检测从链路上接收到的TCP数据报,分析其所属的TCP连接会话,并依据会话状态对TCP数据报进行管理;

TCP反馈欺骗,TCP代理接收到带负载的数据报后,发送欺骗ACK给源节点,并负责成功传输这些带负载的数据报;

TCP代理删除了从对端接收到的真实的ACK,防止源节点混淆。

使用TCP代理优化的优势还包括:1)逐段可靠保障:由于需要在代理两侧的网段上分别建立了TCP连接,因此在代理节点实际对TCP数据报进行缓存,也即实现了TCP数据的逐段可靠保障;2)链路状况隔离:一条连接所经过的链路可能有不同的MTU,传输速率等,连接只能适配所有链路的最差情况,选择最小的MTU和最低的传输速率;通过代理进行TCP分段,能够屏蔽不同链路的差异,选择适合当前链路配置进行传输[11]。

4.3.2 基于TCP的双端加速技术

传统的TCP协议采用丢包信号作为拥塞控制窗口调整的信号,导致在较高丢包率的战术无线通信网络环境下拥塞窗口无法扩大,导致传输速率较低。TCP双端加速修改了传统TCP协议的拥塞控制算法及确认反馈机制,当出现丢包时,TCP双端加速与传统TCP的窗口变化差别如图8所示。其原理是:1)利用已配置的信息获知当前信道速率;2)由获知的信道速率对TCP数据流发送速率进行控制;3)由于能够对经过信道的所有TCP数据流进行感知,合理分配经过信道的各个TCP数据流的发送速率,以避免信道产生拥塞。

图8 TCP的双端加速技术图

4.3.3 高效丢包感知与重传技术

如图9所示,TCP连接通过反馈ACK信息来保障传输的累积可靠性。由于反馈的ACK只能表示已经累积收到的TCP数据报,发送端无法从反馈的ACK中获得足够的丢包信息;因此在TCP的相关扩展中增加了SACK及SNACK以在ACK反馈中包含丢包信息,以提高发送端对丢包的感知能力。但是SACK及SNACK对丢包的感知也具有一定的局限性,无法对重传数据报的丢失进行感知;由于在信道中所有数据报的丢失概率一致,因此在遭遇重传数据报丢失时,采用SACK或SNACK进行丢包反馈的TCP协议只能通过超时机制重传丢失的数据报,导致传输速率降低。在本项目中,实现了高效丢包感知与重传技术,能够有效提高高丢包信道环境中的TCP传输速率。其原理如下:1)SNACK反馈,在反馈ACK中包含SNACK信息,向发送端反馈丢包信息;2)丢包空洞的扫描及定时触发,在SNACK的基础上增强了对重传数据报丢失的感知能力,使得发送端能够更加及时地进行数据报重传,避免进入超时重传阶段导致传输速率降低[12]。

图9 TCP的反馈ACK示意图

4.3.4 多连接TCP动态分配技术

在当前方案中,所有经过无线链路的TCP数据流均会先由TCP代理加速模块进行处理,因此可以在TCP代理加速模块中为TCP数据流分配可用的无线链路带宽,避免出现竞争拥塞。该技术效果如图10所示。其原理是:1)全局带宽分配:设置全局定时器定期生成可用带宽令牌,为经过无线链路的TCP数据流分配可用带宽;2)TCP数据流优先级管控:依据可配置的优先级信息为不同优先级的TCP数据流分配不同的带宽;3)TCP带宽需求感知:对TCP数据流的带宽需求进行感知,为带宽需求低的TCP数据流少分配或不分配带宽,避免带宽浪费[13]。

图10 TCP带宽分配技术效果图

5 结语

本文针对战术无线网络的具体特性,从TCP协议和网络自身状况等影响传输速率的因素分析,屏蔽异构网络之间的差异性,对数据传输过程进行逐段优化。通过将该设计以软件模块形式嵌入至产品运行经长时间使用验证,使用效果良好,数据传输性能得到有效提升。

猜你喜欢

传输速率控制算法链路
一种移动感知的混合FSO/RF 下行链路方案*
基于凸优化的FSO/RF 自动请求重传协议方案
基于模型预测控制算法的智能密度控制系统在选煤厂的应用
天空地一体化网络多中继链路自适应调度技术
基于Backstepping的非线性无人船航向控制算法
三星利用5G毫米波 实现创纪录传输速率
夏季滨海湿地互花米草植物甲烷传输研究
一种IS?IS网络中的链路异常检测方法、系统、装置、芯片
ABS自动优化控制算法及应用
基于非线控制算法的三相感应异步电机设计