Semi-TCP 与ARQ 联合的端到端可靠传输方法*

2023-10-07 03:45易昌华张绍凤
电子技术应用 2023年9期
关键词:链路层重传传输层

易昌华,周 亮,张绍凤

(1.上海海洋大学 现代信息与教育技术中心,上海 201306;2.上海交通大学附属第六人民医院,上海 201306;3.上海海事大学 信息工程学院,上海 201306)

0 引言

无线自组织网络(Wireless Ad-hoc Network)是一个由几个到上百个节点组成的、采用无线通信方式的、动态组网的多跳的移动性对等网络。在无线自组织网络中,数据传输所受干扰较多,信道不稳定,传统的传输控制协议(Transmission Control Protocol,TCP)在无线自组网中性能较差。TCP 拥塞控制主要作用在传输层,而自动重传请求(Automatic Repeat-reQuest,ARQ)协议的可靠性控制作用在链路层,因此传统TCP 与ARQ 结合的可靠控制方法的缺陷在于链路层与传输层之间存在着竞争,ARQ 与TCP 有可能会同时进行重传,TCP 会误认为数据包丢失是由于拥塞导致的,启动可靠性控制机制造成大量的TCP 重传,在信道状态很差时,链路层在节点间的ARQ 重传也会急剧增加,导致节点的缓存占用率很高,网络性能急剧下降。

为了解决上述问题,本文采用Semi-TCP 协议[1]与ARQ 协议相结合,相比于传统TCP,Semi-TCP 在不改变原有TCP 架构的基础上将拥塞控制下放到链路层,与链路层ARQ 协议相结合,改变链路层ARQ 的纠错能力,使部分节点的数据错误直接通过传输层Semi-TCP 进行重传,这样就能有效缓解当前节点缓存占用率大的问题,提高吞吐量。

1 相关技术概述

在无线多跳网络复杂的应用环境中,链路质量较差,传统的TCP 技术是基于有线环境的,在无线多跳网络环境中性能表现不佳。而在无线网络中,数据丢失的原因不仅仅是网络拥塞,还有可能是链路错误导致的,而传统TCP 却不能区分上述两种情况,这时TCP 就会产生误判,启动拥塞控制,这样会导致信道的利用率下降,网络性能下降,也造成了资源的浪费。上述问题使得TCP 协议在无线自组网环境下性能非常差,因此,不能单纯在无线多跳网络中采用传统TCP 协议,需对其进行端到端的改进。

目前有学者对TCP 协议进行优化,主要在拥塞控制方面改进,避开传统TCP 在拥塞控制方面的缺陷,对拥塞控制的判断会更加准确,进而提高TCP 的高效性和可靠性[2]。无线网络的很多传输问题都可以通过该方案进行改善[3]。该方案也存在一定的缺陷,目前比较有代表性的如文献[4]的TCP RENO 算法,需要考虑共同过渡的方案,其协议栈的改变难以实现。另一个解决方案就是将TCP 与ARQ 协议联合分析的链路层解决方案,由于无线多跳网络具有复杂的传输环境,传输数据的可靠性差,因此,一般为了保证数据传输的可靠性都会在数据链路层采用ARQ 协议传输。ARQ 协议有独特的优势:首先方便进行传输加密报文,因为不需要检查IP 和TCP的头部[5];而且ARQ 协议在数据链路层就会有确认重发,与传输层TCP 的确认没关系,由于确认在链路层,这样的重传触发会更快更准确[6];ARQ 不需要为每条连接都维护报文段队列,在链路层的缓存会为高层的协议共享,这样发送节点和接收节点的传输层协议都不需要修改[7]。但是数据链路层的ARQ 也不能完全保证数据的正确传输,还是要依靠传输层的协议来最后把关传输的可靠性,但是链路层和传输层超时重传的相互作用有可能会对整体性能优化起到相反的作用。

而链路层协议对于TCP 性能具有多方面的影响,主要表现在重传次数和设置超时重传定时器方面、报文的失序方面以及两层之间超时重传导致的重传竞争方面。有研究报告表明,TCP 的性能在TCP 观察到报文差错率达到1%~2%时,就会产生一个明显的下降。为了防止这种情况的产生,链路层必须在传输层上层协议就得为其提供一个保障,尽可能纠正更多的报文错误,使TCP能够感知到的差错率低于1%[8]。在数据链路层ARQ 会有重传报文,但是这样会导致报文出现一个失序的情况,而TCP 是要保证报文的顺序的,这样就又会触发不必要的拥塞控制[9]。因此,为了将TCP 报文段进行排序,链路层应该存在一定的缓存,将报文段按一定的顺序提交给上层TCP 处理。而关于两层之间的竞争,链路层与TCP 层可能在同时恢复同一个丢失的报文段,这会严重影响系统的性能。ARQ 协议的差错控制可以减小无线衰落信道的差错率[10],这种改进方法虽然很大程度上降低了误帧率,但是ARQ 重传次数过多,传输层的TCP 端到端的时延也会有所延长,在错误复杂时可能会导致TCP 超时,影响性能。

2 Semi-TCP 与ARQ 联合的端到端可靠传输方法

由于传统TCP 技术会将丢包误认为是网络拥塞控制导致的,但是实际上在接收端数据丢失也有可能是节点对共享信道的竞争或者频繁的路由失效等中间节点的问题,传统TCP 用同样的机制来解决上述问题,就会导致带宽利用率不高、吞吐量下降以及拥塞误判、反应迟钝等一系列问题。传统TCP 与数据链路层ARQ 差错控制相结合之后,也会出现将中间节点的问题误判的情况。而Semi-TCP 并不同于之前对TCP 的研究,Semi-TCP 并没有改变传统TCP 的协议结构,只是将原传输层中的拥塞控制的功能下放到数据链路层,这样在数据链路层的中间节点中就能准确知道网络中的拥塞状态,能更准确地判断拥塞和更快地采取措施。

将Semi-TCP 代替传统的TCP 技术与数据链路层的ARQ 相结合,便能用ARQ 来保证链路层的数据传输的可靠性,减少传输层进行端到端的重传时导致的时延大的问题,然后通过Semi-TCP 来将拥塞控制功能通过数据链路层来完成,该方案使网络的拥塞情况能被更准确地掌握,这样就能避免传统TCP 由于误判导致的性能差的情况,特别是在信道情况比较复杂的背景下,更能提高信道带宽的利用率,解决接收端吞吐量下降以及拥塞误判、反应迟钝等一系列问题,最后还能在传输层保证信道端到端的数据传输的可靠性。

当ARQ 与Semi-TCP 联合之后,为了降低缓存占用率将ARQ 纠错率降低到80%,于是余下的错误数据会通过Semi-TCP 进行重传,这样在一定程度上完成了缓存占用率的降低,具体实现原理如图1 所示。

图1 Semi-TCP 与ARQ 协议联合实现原理

ARQ 的差错控制主要是通过ACK 等确认帧的重传机制实现的,一般情况下主要有stop-and-wait ARQ、goback-N ARQ 和selective-repeat ARQ 3 种实现方法。这3种方法基于相同的理论,因为窗口数目的不同有着不同的机制细节。stop-and-wait ARQ 就是发送节点每发送一个数据包,就会有一段等待的时间,然后再决定重发或者发送新的数据包,这样的方式会存在很大的劣势,时间会等待比较长,浪费信道资源,所以在实际中采用很少单独使用。go-back-N ARQ 就是以窗口的形式发送N个数据包,一下发送N个数据包之后等待反馈确认帧,若发生错误会直接重新发送错误之后的所有数据包。而在接收端,发生错误后错误的数据包以及一起收到的N个数据包都不会被保留。与之前的对比,该方案有很大的效率提升,但还是有很明显的不足之处,就是信道的利用率太低,特别是在无线多跳网络环境中更加不符合需求。selective-repeat ARQ 与前两种方法不同,它只会重传错误数据包,因此该方案的效率有明显的提升,但也存在缺陷,即在数据重传时只重传发生错误的那个数据包这样会导致原先的数据包的顺序发生了调动。为了防止这种问题,就需要一个缓存区来缓存已经接收到的数据直至错误的数据也被接收到。上述缺陷限制了selective-repeat ARQ 对网络环境的适应范围。

通过分析不同ARQ 协议的优势与缺陷,最终选择selective-repeat ARQ 来完成此次与Semi-TCP 联合的方案。它的优点就是不需要重传其他的帧,信道利用率高,如图2 所示,发送方按照顺序发送帧序列,对于没有错的帧,接收端反馈ACKi。那么对于有错误的帧,假设第j帧出错,那么收端反馈NAKj表示第j帧出错,那么发送端就只重发第j帧。接收方照常接收其他帧,当收到其他帧之后可能又收到第j帧,这时它意识到该帧是重传的,接收这个帧并且按照正确的顺序排好。该方法的缺点就是占用缓存较高,实现复杂,近年来,硬件的性能越来越高,有效地弥补了selective-repeat ARQ 的缺点。

图2 selective-repeat ARQ 协议

3 仿真与分析

在EXata 平台[11-12]上进行了仿真,对传统TCP 与ARP 结合算法(简称TCP-ARQ)、Semi-TCP 与ARQ 结合算法(简称Semi-TCP-ARQ)进行对比分析[13]。具体参数见表1。

表1 仿真场景参数

图3 所示是两种不同的方案在不同误码率的情况下其平均时延的情况,其中横轴坐标向右延伸代表误码率的不断增加,而纵轴坐标表示的是平均时延值。整体来看,两种方案都是随着误码率的增加时延增加,Semi-TCP-ARQ 的时延低于TCP-ARQ。

图3 时延对比图

从图4 中可以看出,在信道误码率不同的情况下,信道的平均吞吐量随着误码率的增加而显著降低,而且采用 Semi-TCP 和 ARQ 相结合的可靠性控制方案相比传统的 TCP 与 ARQ 相结合的方案平均吞吐量要高。由仿真结果可知,相比于传统的 TCP 方案,采用 Semi-TCP与ARQ 进行联合的可靠性控制方案能表现出更优异的性能。

图4 吞吐量对比图

4 结论

本文对传统 TCP 在无线自组织网络中性能不佳的问题进行了分析,对TCP 和ARQ 协议进行了详细的介绍,提出了一种基于 Semi-TCP 与ARQ 结合的可靠传输方法,通过仿真实验与普通TCP 与ARQ 结合的方法进行了对比,经过分析发现Semi-TCP 与ARQ 结合有效地提高了网络的平均吞吐量,降低了时延,同时缓解了节点缓存占用率过高的问题。

猜你喜欢
链路层重传传输层
基于多空间内存共享的数据链路层网络包捕获方法
基于Python语言的网络传输层UDP协议攻击性行为研究
ZnO电子传输层在有机无机杂化钙钛矿太阳能电池中的应用
面向异构网络的多路径数据重传研究∗
物联网无线通信传输层动态通道保障机制
基于物联网GIS的消防智能巡检系统设计与实现
基于FPGA全功能MVB网络从设备链路层IP核设计
数据链路层的选择重传协议的优化改进
IEEE 1394事务层接口的设计与实现
MPTCP中一种减缓缓存阻塞的重传策略