卫星网络中的TCP 跨层技术研究
2021-01-17张连连
张连连,刘 锋,孙 杰,葛 宇
(1.北京航空航天大学 电子信息工程学院,北京 100191;2.河北建筑工程学院 电气工程学院,河北 张家口 075000)
0 引 言
TCP/IP[1]协议是当前Internet 中最为广泛使用的协议。但是,当它运行在卫星通信环境下时,却面临着诸如高误码率、长往返时延、非对称信道、间歇性链路中断等问题,大大影响其性能,阻碍了在卫星数据传输中的应用。在卫星通信网络中采用改进的TCP/IP 协议以克服卫星网络的特性对传输性能的影响,是一种切实可行的方法。TCP 一般不能分辨数据包丢失的原因是由于不能区分链路误码和网络拥塞,而将丢包现象都认为是拥塞的信号。所以,当有数据包因为传输中出错而丢弃,即使没有发生拥塞,TCP 也会缩减发送窗口。卫星链路上出现的传输错误往往具有突发性,如果在一个RTT 内出现突发错误导致多个数据包连续丢失,就会严重降低吞吐量[1]。TCP 提供了 SACK 机制、SNACK 机制以及CCSDS 提出的链路层TC 协议,均能够对误码丢包进行重传。重复的重传会导致TCP 窗口缩减、吞吐量降低、链路带宽浪费的情况[2-6]。本文提出将传输层与链路层的差错控制信息进行跨层交互来有效地解决上述问题,由传输层将数据包序列号及连接号等信息通知链路层,链路层将相应序列号数据包的重传状态通知传输层,使TCP 能够区分当前的超时与快速重传是否必要,从而减少传输层不必要的重传,提高其在高误码率环境下的性能。
1 跨层信息交互机制
链路层重传机制会导致链路层提供的有序或乱序的帧分组发送对TCP 造成两种影响:当链路层提供的是有序的帧分组传送时,帧分组在网络中会产生较大的时延而使TCP 发生不必要的超时重传;当链路层提供的是乱序帧分组传送时会产生帧分组重排序的问题,当重排序长度超过3 个或多个RTT,就会引起TCP 发送端不必要的快速重传。这两种情况都会引起链路层和传输层启动差错恢复机制,导致链路层和传输层发生重传竞争的问题。链路层会重传一个或多个帧分组造成帧分组的时延,而同时,终端也会意识到数据包的丢失而错误地进行相同数据包的TCP 端到端重传,即伪重传。这种现象会降低端到端的吞吐量且加大了传输层的响应时间,这是因为两层之间的差错控制机制没有进行协调而导致的,因此会降低端到端的吞吐量且增加了高层的响应时间,可通过跨层信息交互解决上述问题。
1)TCP 发送数据过程中将数据包相应的序列号通告给IP 层。
2)IP 层将数据包序列号与IP 分片对应,同时通知链路层。
3)链路层将数据包序列号与数据帧对应并存储到列表中。
4)当链路层发现数据帧丢失并重传时把重传的数据帧对应的序列号、端口号以及重传状态(开始重传、重传成功、重传失败)通知给TCP 发送端。
5)TCP 获知链路层重传状态并维持一个链路层重传状态列表,并根据三种不同的重传状态分别进行处理。当获知数据包重传成功时从列表中删除相应数据信息;重传失败时则立即重传相应的数据包;开始重传时则查找当前链路层重传状态列表是否已经存有重传数据包的信息,若没有则按序列号顺序插入到列表中,如有则不做任何处理。
6)在标准TCP 中发送端发生重复ACK 或定时器超时事件时,检查丢失的数据包是否存在于链路层重传状态列表中,如存在,则不做任何处理;如不存在,认为是网络拥塞的原因,按照TCP 原有的规则缩减拥塞窗口,并重传丢失的包。
2 基于跨层信息交互机制的TCP协议性能分析
假设卫星链路中丢帧率为pf,TCP 的单个数据包在CCSDS TC 链路层分为N个数据帧,则可以计算出链路中丢帧率与TCP 数据包丢包率的关系。
一个数据帧在第i次(i≥1)传输成功的概率p(i)为:
单个数据帧在最大重传次数为M的情况下成功传输的概率psuccess为:
则TCP 数据包传输失败的概率ppacket为:
TCP 吞吐量模型[7]采用式(4)计算:
式中:λ为 TCP 吞吐量;b为 TCP 估计的数据速率;rto 为超时重传时间。当链路层是有序的分组传输时,传输层rto 一般可认为是4·rtt。TCP 的单个数据包在链路层分为N个数据帧,单个数据帧在最大重传次数为M=4 时,可能会发生超时重传,根据式(3)得到TCP 超时重传事件发生的概率prto。
当N取不同的数值,链路层最大重传次数M分别为3,4,7 时,TCP 数据包传输失败的概率ppacket与丢帧率的关系分别如图1~图3 所示。
图1 M=3 时丢帧率与TCP 丢包概率之间的关系
从图中可以看出,当M越大时,TCP 数据包传输失败的概率越小。在丢帧率较小的情况下,MAC 层的少次重传已经能够满足需求并不需要传输层进行重传,仅在丢帧率较高,MAC 层重传不足以满足数据包成功传输的情况下,跨层信息交互机制才会起到作用。M分别为 3,4,7 时,当丢帧率分别小于 0.05,0.1,0.2 时,TCP 丢包率基本可以认为等于0。此时数据包的重传都是由MAC 层完成的,否则数据包的重传工作有部分由MAC层完成,其余部分由传输层完成。
图2 M=4 时丢帧率与TCP 丢包概率之间的关系
图3 M=7 时丢帧率与TCP 丢包概率之间的关系
当链路层是无序的分组传输时,在传输速率较大的情况下,只要分组长度超过3,就会引起TCP 的快速重传,引发不必要的窗口缩减,大大降低了TCP 的吞吐量。由于无序分组传输存在很多的不确定性,因此本文只分析了有序分组传输时的TCP 协议性能情况。
3 基于跨层信息交互机制的TCP 协议的仿真验证
本文在OPNET[8]中实现了CCSDS 协议框架,在链路层使用了TC 协议,并设计实现了传输层与链路层之间的跨层信息交互机制,创建了卫星接入场景如图4 所示,包括地面站节点、地面接入节点、卫星发射节点及配置节点,对链路层有序分组传输的情况进行了仿真验证,对比了基于跨层信息交互机制的TCP 与标准TCP 的吞吐量。
在仿真场景中无线链路和有线网络部分的往返传播时延分别是50 ms和10 ms,无线链路带宽为11 Mb/s,有线链路带宽为100 Mb/s。仿真中运行的业务为卫星向地面发送FTP 连续文件数据传输,文件大小为1 MB。仿真开始时间为200 s,仿真持续时间设置为3 600 s,且TCP 数据包在链路层不进行分帧即N=1。从总吞吐量方面对基于跨层设计的TCP 和标准的TCP 进行对比。设置链路层最大重传次数分别为3,4,7,仿真结果如图 5~图8 所示。
图4 卫星接入仿真场景
图5 跨层设计TCP 相对于标准TCP 吞吐量增长的百分比
图 6 M=3 时 TCP 传输 1 MB 数据时间对比
从图5 中可以看到,链路层重传次数M分别为3,4,7 情况下基于跨层交互的TCP 相对于标准TCP 的吞吐量增长百分比情况。可以看出使用跨层机制的TCP 在丢帧率较高的情况下,能够有效地提高TCP 的吞吐量,但在丢帧率较低的情况下对吞吐量影响不大。图5结果与图1~图3 中的结果相吻合,从图1~图3 中可以看出在丢帧率较低的情况下,MAC 层的少次重传已经能够满足需求并不需要传输层进行重传,跨层信息交互机制并不能起到提高吞吐量的作用。仅在丢帧率较高,MAC 层重传不足以满足数据包成功传输的情况下,跨层信息交互机制才会起到作用,能够有效地提高吞吐量。从式(5)也可以看出,在丢帧率较低的情况下TCP 超时事件发生的概率也较低,所以跨层信息交互机制不能提高低丢帧率情况下的吞吐量。同时,从图6~图8 中可以看出,在丢帧率较高的情况下,使用跨层设计的TCP 传输1 MB数据的时间远低于标准的TCP。
图 7 M=4 时 TCP 传输 1 MB 数据时间对比
图 8 M=7 时 TCP 传输 1 MB 数据时间对比
4 结 语
链路层的重传机制可以改善卫星网络中TCP 的性能,但需要避免引发TCP 伪重传现象。本文提出基于跨层信息交互机制的改进TCP 协议,通过链路层和传输层进行差错控制信息的协调,避免了伪重传现象的发生。虽然增加了发送端的复杂度,但是对丢帧率较高的卫星网络中TCP 的吞吐量有显著的提高,且对中间节点和TCP 接收端的协议栈无特殊要求,兼容性好,容易实现。
注:本文通讯作者为葛宇。