摘 要: 针对特殊场景下需通过北斗短报文传输大量数据信息的需求,探讨并设计了一种适合于北斗通信的长报文可靠传输协议框架。通过扩展北斗短报文传输协议,结合Redis应用,提出最大重传次数和超时等待控制因子,建立北斗长报文传输差错重传机制,从而解决了大数据量报文在北斗通道的传输问题。实验结果表明,该传输协议可实现对长报文丢包的差错重传功能,有效控制“盲目发送”现象,使得有效信息率得到提高。
关键词:北斗卫星;长报文;Redis;可靠传输
0 引言
北斗卫星导航系统所具备的短报文通信功能,可在我国领土区域内实现全覆盖、全天候服务,具有传送速度快、不受地形条件和环境气候影响等优势,为解决远海、沙漠、深山等无移动网络信号覆盖地区的信息获取和发布提供了一种有效的解决途径。
北斗卫星导航系统的信道资源有限,短报文通信受到北斗卡的通信频度和通信报文长度方面的限制。同时,受环境及设备状态等影响,通信过程存在数据丢包现象。这些问题很大程度上影响了短报文的应用效果[1]。实际应用中,传输报文长度往往又是不固定的,传输的数据量较大时,单次北斗短报文通信无法满足需求。如何有效利用北斗短报文通信资源,丰富其传输内容并提高数据传输可靠性,成为北斗相关数据通信系统建设的一个重要课题。
本文针对北斗报文传输应用的实际需求,结合北斗数据信息服务平台应用,设计一种适合北斗长报文传输管理的方案。通过对传输数据进行协议约定,提出报文通信重传控制因子和长报文信息补发请求机制,保证北斗终端与系统平台之间报文的有效传输。
1 传输协议分析
针对北斗短报文通信特点,结合信息服务平台功能需求,设计基于存储系统的长报文可靠传输框架协议,以解决数据信息服务系统的通信问题。
1.1 系统组成
本设计系统组成如图1所示,主要包括:北斗通道端、数据处理中心、北斗终端、存储系统和应用系统。
根据北斗信息服务平台设计需求,内存数据库采用Redis系统。Redis是一款高性能的key-value存储系统,其读写效率高,可提高北斗短报文处理能力,降低响应时间长度。配合协议设置及数据管理算法,可为长报文分包处理提供一种有效的解决方案。
1.2 协议规约
北斗短报文功能支持的单次传输长度有效,需要对北斗数据传输格式进行协议拓展[2],如图2所示。
本文为使短报文电文内容携带控制信息,并丰富数据类型,对协议二次封装[3],具体定义如下:
(1)协议头部:为了兼容和区分标准的北斗数据格式及平台扩展协议格式,电文开头设置协议编码部分,占用半个字节。
(2)数据标识:占用半个字节,每个比特字段分别代表一个标识,如标识是否压缩、加密或补包数据等。
(3)总包数:占用1 B,长报文数据通过总包数大小字段来判断数据是否需要进行数据缓存管理。
(4)当前分包编号:占用1 B,标识当前报文属于分包数据的第几个分包。如果数据不需要分包时,该数据字段的值和总包数字段的值都为1。
(5)应用协议编码:占用1 B,标识系统通信过程中的不同业务编码。如语言、图像、导航位置等。
(6)应用数据实体:为电文字段剩余可用部分,具体传输数据格式可由系统业务根据需要定义。
2 框架模型设计
为解决报文发送的频度和长度受限问题,本文采用北斗多卡机来处理报文收发工作,实现短报文的多卡工作模式[4],极大提高了短报文的发送频度。
数据处理整体流程结构如图3所示。
2.1 协议设计
(1)北斗报文协议
北斗通道接入层设备使用的北斗用户机接口协议包括4.0版本和2.1版本。通过软件设计一个通用数据接入实现层,解决北斗数据源差异性问题。
(2)数据传输控制
北斗通信主要以大量的小字节数据为主,传输控制除对长报文数据编解码外,还配合存储系统实现对分包数据的重传管理。
下发分包数据时,先将数据存入Redis并设置有效期,分包发送结束后更新发送状态。若在数据有效期内收到重传请求,则根据请求报文表明的编码重发分包,并延长存储数据的有效期,同时将重传请求计数加1。若重传超过N次,清除该存储数据,结束本条长报文的缓存管理。N值由系统能力设定,默认为3。
数据接收处理算法流程如图4所示。
2.2 缓存管理
由于存储的分包对象信息较多,本文采用Hash数据结构管理数据,并采用Redis默认的数据过期策略处理无效数据。同时,本文对缓存对象结构设置了数据发送标识及发送次数计数,以便差错重传过程中能有效识别重传数据状态。
2.3 自适应差错重传
针对长报文数据传输过程中存在的丢包现象,参考文献[5]中提出了反馈机制,但只有反馈机制的情况下,若通信成功率低,容易造成循环反馈或长时间等待反馈的现象,盲目请求重发严重浪费了北斗带宽资源。参考文献[6]提出了确认答复机制,但在需要缓冲的数据量大时没有提出对应管理方式。本设计考虑北斗通信过程中实际通信流量限制等因素,差错重传方式参考并简化TCP/IP传输机制。同时,为防止出现反复重复发送重传请求或长时间等待补包数据带来的资源开销问题,引入了重传控制因子,由请求计数N和补包等待时间T两个因素共同组成。同时对重传请求机制设定发送重传请求次数的限制,并在接收补包数据过程中增设可动态调整等待长度机制。等待时间T=C×t,其中t为30 s的等待时间,C为丢包总数。若在N次的T时间内都没有收到补包数据,则放弃请求重传;若N次重传请求中有收到补包数据,但还没接收完整且N>1时,重新赋值N为N/2,并重新执行请求重传过程。
以接收端的丢包请求重传为例,控制因子自适应调整算法包含重传请求控制和数据补包处理两部分。重传请求控制流程负责对Redis中存在的缓存数据进行重传并管理控制因子参数N和T,具体流程如图5所示。
数据补包处理负责对补包报文进行处理,更新缓存数据,并根据实际补包情况动态调整控制因子,具体流程如图6所示。
3 测试分析
测试协议框架过程采用北斗终端上报海洋渔业数据信息,测试设备均采用北斗多卡机设备,每个设备接入16张北斗卡。测试过程以发送230个汉字的长报文进行多组对比通信,部分测试数据如表1所示。
从表1可看出,引入控制因子后,通信出现丢包时,平台能够自动完成补包请求报文,虽然会损耗报文用于发送重发请求,但通过控制因子的调整,避免了盲目发送请求的现象,提高了整体通信有效率。第二组数据有效通信率没有得到有效提高,这是实际通信中受到环境影响,导致请求重发过程没有得到有效的响应。测试结果表明,本文的北斗报文可靠传输协议框架设计合理,能够有效解决大数据量报文信息在北斗短报文传输过程中存在的丢包重传问题,验证了本方案的准确性和可行性。
4 结论
随着北斗卫星导航系统建设力度的不断加大,基于北斗短报文通信的应用也越来越多。本文在分析北斗卫星导航短报文通信功能的特点基础上,结合实际应用需求,探讨了基于存储系统的报文可靠传输框架方案设计及实现,对将北斗短报文通信更广泛而深入地应用在航空航海运输、物联网及地理监测等方面具有一定的借鉴和参考意义,有助于北斗在信息化应用中发挥更大作用。
参考文献
[1] 史向阳.北斗系统在海上多媒体数据传输中的应用研究[D].大连:大连海事大学,2014.
[2] 杨涛,黄森,钟戎强,等.基于本体的北斗信息采集系统研究[J].电脑编程技巧与维护,2012(24):45-46,116.
[3] Mao Xia, Liu Xiang, Feng Tao, et al. A communication protocol of man overboard system based on BeiDou[C]. 2014 IEEE 17th International Conference on Intelligent Transportation Systems(ITSC), Qingdao, China, 2014: 1910-1911.
[4] 缪袁泉,丁琪,胡知斌,等.基于北斗短报文功能的疏浚船舶数据传输系统设计[J].中国港湾建设,2014(10):53-56.
[5] 姚作新.基于北斗卫星短信通信方式的无人值守自动气象站网[J].气象科技,2012,40(3):340-344.
[6] 张维杰,陈欢,罗静,等.基于北斗卫星的机动卫星通信地球站远端技术支援系统研究[J].微型机与应用,2015,34(4):58-60,63.