卫星链路的拥塞控制方法、装置、终端及介质
文献发布时间:2023-06-19 09:49:27
技术领域
本申请涉及通信技术领域,具体涉及一种卫星链路的拥塞控制方法、装置、终端及介质。
背景技术
与地面通信网络相比,卫星通信能够保障快速、稳定的数据链路传输,卫星链路目前也发展到了高通量阶段,目前卫星通信最近已作为5G回传的关键支持技术之一。在高通量卫星通信系统发展阶段,高延时与高带宽导致的长肥管道效应越来愈严重,存在的问题有:一、在严重的状态下导致链路利用率低甚至是不可用状态;二、高轨卫星具备长时延、高误码率和链路不对称特性。
相关技术中,一般采用基于地面网络设计的TCP(Transmission ControlProtocol)传输协议来进行卫星通信链路的拥塞进行控制。由于TCP协议判断拥塞的标准是数据包丢失称为丢包拥塞,而卫星链路中的高误码率会导致TCP协议应用在卫星通信链路中的误判,因此,目前的卫星链路拥塞控制算法存在以下问题:一、因多次数据重传,导致部署TCP协议的卫星通信链路传输效率低下的问题;二、因卫星链路具有高时延特性,地面终端在发送数据后会通过很长时间才能接收到ACK确认,这会导致在卫星链路中有较长一段时间处于慢启动阶段导致通信链路利用率低下。
发明内容
为了解决上述通信链路利用率低的技术问题,本申请提供一种卫星链路的拥塞控制方法、装置、终端及介质。
根据本申请的第一方面,提供了一种卫星链路的拥塞控制方法,该方法包括:
获取卫星链路中发送端发包的待处理往返时间RTT值;
基于待处理往返时间RTT值,计算卫星链路的新增益系数;
依据新增益系数,确定针对发送端的新发送速率;
控制发送端按照新发送速率进行数据传输处理,以实现对卫星链路的拥塞控制。
根据本申请的第二方面,提供了一种卫星链路的拥塞控制装置,该装置包括:
时延探测模块,用于获取卫星链路中发送端发包的待处理往返时间RTT值;
增益计算模块,用于基于待处理往返时间RTT值,计算卫星链路的新增益系数;
速率计算模块,用于依据新增益系数,确定针对发送端的新发送速率;
拥塞控制模块,用于控制发送端按照新发送速率进行数据传输处理,以实现对卫星链路的拥塞控制。
根据本申请的第三方面,提供了一种终端,该终端包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时以实现上述卫星链路的拥塞控制方法。
根据本申请的第四方面,提供了一种计算机可读存储介质,该介质存储有计算机可执行指令,该计算机可执行指令用于以执行上述卫星链路的拥塞控制方法。
本申请实施例通过获取卫星链路的待处理往返时间RTT值,基于待处理往返时间RTT值,计算卫星链路的新增益系数,以依据新增益系数,确定针对发送端的新发送速率,控制发送端按照新发送速率进行数据传输处理,这种通过卫星链路的待处理往返时间RTT值的方式,起到了通过RTT值实时调整卫星链路的增益系数,从而达到调整发送端发送速率的效果,使发送端的发包的速度不超过接收方收包的能力,尽可能的少出现网络拥塞现象,将数据包顺利传输至目的地址,避免因发送端的发送速率不符合卫星链路要求,导致卫星链路发生拥塞,实现了对卫星链路的拥塞控制的目的,提高长延时卫星链路的数据传输的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种卫星链路的拥塞控制方法的流程示意图;
图2为本申请实施例提供的一种卫星链路的拥塞控制方法的轨道卫星网络架构的示意图;
图3为本申请实施例提供的一种卫星链路的拥塞控制方法的轨道卫星网络架构的延时与吞吐量的对比示意图;以及
图4为本申请实施例提供的一种卫星链路的拥塞控制装置的框图结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。
首先对本申请涉及的几个名词进行介绍和解释:
在本申请实施例中,拥塞控制(Congestion control)是指站在整个互联网的维度,让网络里所有TCP连接最大化共享网络通道的同时,尽可能的少出现网络拥塞现象,让网络世界里的每一个参与者既公平又高效的技术。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
根据本申请的一个实施例,提供了一种卫星链路的拥塞控制方法,如图1所示,该方法包括步骤S101至步骤S104。
步骤S101:获取卫星链路中发送端发包的待处理往返时间RTT值。
具体地,终端获取卫星链路中发送端发包的待处理往返时间RTT值。
在本申请实施例中,待处理往返时间RTT值用于表征数据包从发出去到收到对它的ack的来回时间。具体地,可以采用平滑方式计算RTT。
在本申请实施例中,卫星链路用于表征在卫星通信系统中,包括发端地球站、上行链路、卫星转发器、下行链路、收端地球站的用于信息传输的链路。
步骤S102:基于待处理往返时间RTT值,计算卫星链路的新增益系数。
在本申请实施例中,增益系数是指影响数据包的发送速率的参数。
具体地,可以根据预设的增益系数算法来确定新增益系数。例如,
步骤S103:依据新增益系数,确定针对发送端的新发送速率。
在本申请实施例中,新发送速率用于表征卫星链路的发送端发送数据的速度。
步骤S104:控制发送端按照新发送速率进行数据传输处理,以实现对卫星链路的拥塞控制。
具体地,控制发送端单位时间内发送的数据包的数量。
本申请实施例通过获取卫星链路中发送端发包的待处理往返时间RTT值,基于待处理往返时间RTT值,计算卫星链路的新增益系数,以依据新增益系数,确定针对发送端的新发送速率,控制发送端按照新发送速率进行数据传输处理,这种通过卫星链路的待处理往返时间RTT值的方式,起到了通过RTT值实时调整卫星链路的增益系数,从而达到调整发送端发送速率的效果,使发送端的发包的速度不超过接收方收包的能力,尽可能的少出现网络拥塞现象,将数据包顺利传输至目的地址,避免因发送端的发送速率不符合卫星链路要求,导致卫星链路发生拥塞,实现了对卫星链路的拥塞控制目的,提高长延时卫星链路的数据传输的效率。
在一些实施例中,步骤S101进一步包括:
步骤S1011(图中未示出):基于预设的测量周期,获取待处理往返时间RTT值。
本申请实施例中,将测量周期设置为每间隔10秒执行一次测量。具体地,测量周期还可以根据也许需求设置为其它数值。
具体地,可以设置执行步骤S101条件,即,在满足预设条件时,执行步骤S1011。例如,若预设条件为数据发送的稳定状态,那么仅在检测到发送端进入数据发送的稳定状态时,按照预设的测量周期对卫星链路进行RTT值测量处理。
在一些实施例中,在步骤S1011之前,该方法进一步包括:检测到发送端的数据发送状态;步骤S1011进一步包括:若数据发送状态为数据发送的稳定状态,则对卫星链路进行探测处理;依据探测处理结果,确定待处理往返时间RTT值。
在本申请实施例中,稳定状态是指数据包从发出去到收到对它的ack的来回时间连续预定次数相同,或者在预设的误差范围内。
本申请实施例通过稳定状态的检测,避免了在非稳定状态下检测RTT值带来导致的不必要的计算消耗,提高了后续拥塞控制精度。
在一些实施例中,步骤S102进一步包括:
确定参考往返时间RTT最大值和参考往返时间RTT最小值;
计算参考往返时间RTT最大值和参考往返时间RTT最小值的第一差值;
计算参考往返时间RTT最大值和待处理往返时间RTT值的第二差值;
依据第一差值和第二差值的比值,确定新增益系数;
其中,
参考往返时间RTT最大值和参考往返时间RTT最小值是在获取到待处理往返时间RTT值之前,对卫星链路进行探测得到的参数。
具体地,若待处理往返时间RTT值为首次测量得到的,那么参考往返时间RTT最大值和参考往返时间RTT最小值一般为预设的初始值;若待处理往返时间RTT值为为第n+1次测量得到的,那么参考往返时间RTT最大值和参考往返时间RTT最小值则为第n次测量得到的。
具体地,可以通过查询本地缓存,得到历次测量得到的参考往返时间RTT最大值和参考往返时间RTT最小值,以将本次测量得到的待处理往返时间RTT值,以及上一次测量得到的结果,来进行计算。
例如,增益系数μ可以按照下述公式进行计算:
其中,RTTmax为数据传输初始阶段监听到最大值,RTTmin为数据传输初始阶段监听到最小值,r
在一些实施例中,步骤S103进一步包括:步骤S1031和步骤S1032(图中未示出),
步骤S1031:确定新增益系数所属的增益系数阈值范围;
步骤S1032:依据新增益系数所属的增益系数阈值范围对应的速率计算模型,确定针对发送端的新发送速率。
具体地,可以预先设置多个增益系数阈值范围分别对应的计算模型,通过与多个增益系数阈值范围的比较,来确定新增益系数所属的增益系数阈值范围,并将新增益系数所属的增益系数阈值范围对应的计算模型,来进行计算,得到新的发送速率。
具体地,可以将新增益系数逐个与各个增益系数阈值范围进行比较,也可以将新增益系数同时与各个增益系数阈值范围进行比较,以确定新增益系数所属的增益系数阈值范围。
在一些实施例中,步骤S1032包括以下至少一个子步骤:
若新增益系数大于1.25,则依据卫星链路的带宽BtlBW、参考增益系数和1.25的乘积,确定针对卫星链路的发送端的新发送速率;
若新增益系数不小于1且不大于1.25,则依据卫星链路的带宽BtlBW、参考增益系数和新增益系数的乘积,确定针对发送端的新发送速率。
具体地,新发送速率pacingRate可以参照公式(1)或(2)进行计算:
pavingRate=BtlBw×gain×μ 1≤μ≤1.25
pacingRate=BtlBw×gain×1.25 μ>1.25;
其中,BtlBw为卫星链路的带宽,gain为上一次测量确定出的增益系数。
例如,若本次测量为第一次测量,那么gain为预配置的初始增益系数;若本次测量为第二次测量,那么gain为第一次测量确定出的增益系数。
在一些实施例中,步骤S104进一步包括:
依据新发送速率,确定卫星链路延时的时间与吞吐量的对应关系;
基于对应关系,控制发送端进行数据传输处理。
具体地,通过对应关系的查询,来控制相邻两次发送数据包的时间间隔,让网络里所有TCP连接最大化共享网络通道的同时,尽可能的少出现网络拥塞现象,提高数据传输的效率。
地球同步轨道卫星上运行的卫星与地球自转角速度相同称为高轨卫星,传输时延较大成为问题,由地面终端到轨道卫星的传输时延会随地面站的位置改变而变化,卫星传输到地面的接收端的时延较长。如非单颗星传输存在星间传输过程,时延会达到更大,因此通过轨道卫星数据传输的往返时延达到半秒,这就使得卫星链路在长延时条件下,因发送端的发送速率不合适导致卫星链路拥塞的问题。为此,本申请通过对卫星链路的RTT值的实时获取,来重新计算增益系数,以依据重新计算的增益系数来重新确定发送速率,实现通过控制发送端对数据包的发送来避免卫星链路因时延大导致的拥塞问题。
下面利用仿真平台对本申请实施例提供的对卫星链路的拥塞控制方法进行仿真。
首先,对仿真平台进行配置;
其次,利用仿真平台对本申请实施例提供的对卫星链路的拥塞控制方法进行仿真。
其中,针对仿真平台的配置可以参照如下步骤,可以按照以下步骤执行:
步骤一;在开源网络仿真平台扩充卫星仿真模块,编写轨道卫星运行环境脚本。应用时,可以在Linux-Ubuntu18.04系统环境下安装仿真平台软件allinone一体包及相应的编译依赖环境,进入allinone文件夹下,访问contrib目录并对把扩写的satellite模块添加在此目录下,对测试所需的数据输入到data文件夹下,输入预设的轨道数据等数据参数。其中,输入的数据参数主要包括适用于卫星网络仿真的物理信道satellite-channel和satellite-phy两个部分。satellite-phy参数设定要涉及以下几个参数接口的设计及调用:波束接收系统的噪声问题接口调用SatPhy::GetRxNoiseTemperatureDbk();params.m_aciIfWrtNoiseFactor;params.m_extNoiseDensityWhz;params.m_errorModel=SatPhyRxCarrierConf。其中卫星轨道的params.m_errorModel=SatPhyRxCarrierConf表示信道中误码率的设定。
步骤二:在allinone一体包中的修改网络模块的socket.h添加以下部分使得其支持本申请实施例提供的对卫星链路的拥塞控制方法:
voidSetHandler(void*handler){m_handler=handler;}
void*GetHandler(){return m_handler;void*m_handler;
随后在传输控制协议文件夹下添加新的拥塞控制算法及其头文件,添加完成后在修改文件夹下的cflags.py文件把编译警告中断编译取消。随后在allinone文件夹下新建traces文件夹,用于接收安装在地面终端网络设备的往返延时时间和拥塞窗口的数据记。
到此,完成对仿真平台进行配置。
针对利用仿真平台对本申请实施例提供的对卫星链路的拥塞控制方法进行仿真的步骤,可以按照如下步骤执行:
(1):在根据步骤一和步骤二完成仿真平台的配置之后,在仿真平台部署搞对卫星通信场景。具体可以先设置网络仿真节点,节点表示通信链路中地面终端,路由器。创建左节点n0为地面发送终端,两个路由节点n1,n2,右节点n3为地面接受端。创建方法为NodeContainer Sats;Sats.Create(4),得到如图2所示的轨道卫星网络架构,该轨道卫星网络架构包括地面终端101、地面终端102、GEO卫星200和信关站300。
(2):创建好网络拓扑的节点后,配置物理层和卫星链路信道通过调用SatGeoHelper助手类,在网络设备中设置误码率模型SatPhy::ErrorModelm_errorModel;
卫星链路参数设置具体方式为:
PointToPointHelper SatLink;SatLink.SetDeviceAttribute("DataRate",StringValue("Mbps");SatLink.SetChannelAttribute("Delay",StringValue("ms"));设置卫星传输延时和传输速率。
网络设备驱动中设置误码:
SatPhyRxCarrierConf::ErrorModel em(SatPhyRxCarrierConf::EM_AVI);
Config::SetDefault("ns3::SatUtHelper::FwdLinkErrorModel",EnumValue(em));
Config::SetDefault("ns3::SatGwHelper::RtnLinkErrorModel",EnumValue(em));
创建应用程序收发模型设置使用开源仿真平台支持的TCP收发模型OnOff模型,使用OnOffHelper助手类设置发送的目的地址和端口。
使用PacketSink模型进行TCP数据接收。
具体地,在TCP协议内统计收到的TCP包并计算吞吐量并打印。按照本申请实施例提供的对卫星链路的拥塞控制方法,使得作为发送端的地面终端101发包的速度不超过作为接收方的地面终端102收包的能力,尽可能的少出现网络拥塞现象。具体地,本申请实施例提供的对卫星链路的拥塞控制方法计算的不同延时条件下,吞吐量与时间的关系如图3所示。
本申请通过在测试平台中扩写卫星仿真模块,按照上述方法创建卫星仿真模型,将仿真结果输出到traces文件夹下。
本申请的又一实施例提供了一种卫星链路的拥塞控制装置,如图4所示,该装置40包括:时延探测模块401、增益计算模块402、速率计算模块403以及拥塞控制模块404。
其中,时延探测模块401,用于获取卫星链路中发送端发包的待处理往返时间RTT值;
增益计算模块402,用于基于待处理往返时间RTT值,计算卫星链路的新增益系数;
速率计算模块403,用于依据新增益系数,确定针对发送端的新发送速率;
拥塞控制模块404,用于控制发送端按照新发送速率进行数据传输处理,以实现对卫星链路的拥塞控制。
本申请实施例通过获取卫星链路中发送端发包的待处理往返时间RTT值,基于待处理往返时间RTT值,计算卫星链路的新增益系数,以依据新增益系数,确定针对发送端的新发送速率,控制发送端按照新发送速率进行数据传输处理,这种通过通过卫星链路的待处理往返时间RTT值的方式,起到了通过RTT值实时调整卫星链路的增益系数,从而达到调整发送端发送速率的效果,使发送端的发包的速度不超过接收方收包的能力,尽可能的少出现网络拥塞现象,将数据包顺利传输至目的地址,避免因发送端的发送速率不符合卫星链路要求,导致卫星链路发生拥塞,实现了对卫星链路的拥塞控制目的,提高长延时卫星链路的数据传输的效率。
进一步地,时延探测模块包括:
周期探测子模块,用于基于预设的测量周期,获取卫星链路的待处理往返时间RTT值。
进一步地,在基于预设的测量周期,获取卫星链路的待处理往返时间RTT值的步骤之前,时延探测模块还包括:发送状态检测子模块,用于检测到发送端的数据发送状态;周期探测子模块包括:探测执行单元,用于若数据发送状态为数据发送的稳定状态,则对卫星链路进行探测处理;探测值确定单元,用于依据探测处理结果,确定待处理往返时间RTT值。
进一步地,增益计算模块包括:
参考探测值确定子模块,用于确定参考往返时间RTT最大值和参考往返时间RTT最小值;
第一计算子模块,用于计算往返时间RTT最大值和往返时间RTT最小值的第一差值;
第二计算子模块,用于计算往返时间RTT最大值和往返时间RTT值的第二差值;
第三计算子模块,用于依据第一差值和第二差值的比值,确定新增益系数;
其中,
参考往返时间RTT最大值和参考往返时间RTT最小值是在获取到待处理往返时间RTT值之前,对卫星链路进行探测得到的参数。
进一步地,速率计算模块包括:
系数范围确定子模块,用于确定新增益系数所属的增益系数阈值范围;
速度确定子模块,用于依据增益系数阈值范围对应的速率计算模型,确定针对发送端的新发送速率。
进一步地,速度确定子模块包括以下至少一个单元:
第一确定单元,用于若新增益系数大于1.25,则依据卫星链路的带宽BtlBW、参考增益系数和1.25的乘积,确定针对卫星链路的发送端的新发送速率;
第二确定单元,用于若新增益系数不小于1且不大于1.25,则依据卫星链路的带宽BtlBW、参考增益系数和新增益系数的乘积,确定针对卫星链路的发送端的新发送速率。
进一步地,拥塞控制模块包括:
对应关系确定子模块,用于依据新发送速率,确定卫星链路延时的时间与吞吐量的对应关系;
拥塞控制子模块,用于基于对应关系,控制发送端进行数据传输处理。
本实施例的对卫星链路的拥塞控制装置可执行本申请实施例提供的对卫星链路的拥塞控制方法,其实现原理相类似,此处不再赘述。
本申请又一实施例提供了一种终端,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时以实现上述卫星链路的拥塞控制方法。
具体地,处理器可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
具体地,处理器通过总线与存储器连接,总线可包括一通路,以用于传送信息。总线可以是PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。
存储器可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
可选的,存储器用于存储执行本申请方案的计算机程序的代码,并由处理器来控制执行。处理器用于执行存储器中存储的应用程序代码,以实现上述实施例提供的对卫星链路的拥塞控制装置的动作。
本申请又一实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,该计算机可执行指令用于执行上述的卫星链路的拥塞控制方法。
以上所描述的装置实施例仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上是对本申请的较佳实施进行了具体说明,但本申请并不局限于上述实施方式,熟悉本领域的技术人员在不违背本申请精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
- 卫星链路的拥塞控制方法、装置、终端及介质
- 卫星终端端对端通信链路的建立方法、系统、装置及介质