基于通信协议的数据解析研究与实现

2019-10-08 06:27闫超
软件 2019年6期
关键词:通信协议预处理

摘  要: 网络传输广泛应用在IT领域的各个领域,为保证数据通信网中通信双方能有效、可靠通信而规定的一系列约定。在实际应用中会接触到对于通信协议的解析的需求,解析的方法更是根据实际情况种类繁多。本文主要依据卫星地面数据的解析问题,对实际应用中可能遇到的实时传输、误码、循环重传等不同的数据情况进行了分析和处理。针对去重复、容错等要求对不同解析方法的应对进行了分析、比较和实验;针对数据解析时效性的要求,对数据进行分配并调度到线程池中进行处理,从而达到时效性的目的。

关键词: 通信协议;预处理;包处理

中图分类号: TP311.52    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.06.037

本文著录格式:闫超. 基于通信协议的数据解析研究与实现[J]. 软件,2019,40(6):160163

【Abstract】: Network transport is widely used in various domain of IT, network both sides data communication effective and reliable guaranteed by series of agreements. In real application, it needs to parse communication protocol and there are various parsing methods base on actual situations. This article is mainly based on analysis of satellite and ground data, it analyzed and processed different data situation may occur in reality, like real-time transmission, error, retransmission cycle and etc. According to requirements of de-duplication, fault tolerance and etc, it analyzed, compared and experimented different parsing methods. According to data parsing timeliness requirements, it distributed data and scheduled to a thread pool for processing.

【Key words】: Communication protocol; Preprocessing; Packet processing

0  引言

数据的通信协议[1]亦称数据通信控制协议。是为保证数据通信网络中通信双方能有效、可靠通信而规定的一系列协议。这些协议包括数据的格式、顺序、速率、数据传输的确认或拒收、差错检测、重传控制和询问等操作。最广泛的通信协议为TCP[2]/IP[3]协议和UDP协议,本文讨论的卫星的通信[4]协议就是在此协议的基础上进行裁剪、修改和扩充得到的。

数据解析是指根据已知的数据通信协议,按照协议去掉冗余信息并进行计算获得用户需要的数据信息,在很多处理系统中通常为第一个或者前面环节用于数据的接收的初步处理,大量的操作与运算都在后台服务器端進行。

1  功能与建模

1.1  功能

根据帧数据格式和帧同步头获取帧数据,去掉帧的冗余信息获得包数据,再从包数据[5]解出所需要的数据信息并通过参数解算、格式转化等操作获得需要的接口数据。

由于卫星重复下传数据造成了重复数据,需要进行去重处理。因为地面接收和星上下传时间不同步,所以无法判断数据重复的起始位置,所以只能通过解析数据获得包时间,根据包时间是否重复判断数据的重复性并去重复。

1.2  数据建模

本文参照数据传输的基本数据格式,设计了帧数据和包数据的格式。

帧数据格式:1F2F3F4F为帧头,帧长度固定为1024B;

包数据格式:AAAABBBB为包头,长度由所加载的脉冲数联合确定,具体如下表所示。

2  数据解析算法设计与实现

2.1  解析算法介绍

数据解析过程按照固定步进和回溯对数据进行解析。一般的数据帧和数据包都有一定的规律,数据帧往往都是固定长度固定节拍,数据包的长度根据信息源、采样率和采样时间有所不同,但是根据包信息一般可计算出包的具体长度,所以根据固定节拍查找速度较快,但是对于纠错能力比较弱,当固定步进无法找到合适匹配头时,需要重新从搜索位置逐字节寻找。当获得一包数据后,由于包内数据的运算量可能很高,需要创建线程池,将每包数据作为独立的数据片段分配到不同的线程中进行处理。

2.2  数据解析

逐字节递增进行帧和包同步头的匹配,当匹配到合适的帧和包同步头后进行有效性验证,对于正确的数据进行后续处理;

固定步长查找方法是由于我们在组帧的时候也是按照固定节拍进行组帧,反过来一般的数据帧和数据包都有一定的规律,数据帧往往都是固定长度固定节拍,数据包的长度根据信息源、采样率和采样时间有所不同,但是根据包信息一般可计算出包的具体长度,所以根据固定节拍查找速度较快;

混合查找就是以固定步长为引导,当固定步长无法查找到有效的同步头,在回溯到当前的查找位置用逐字节进行遍历查找。

第一种方法是适应性最强,但是带来的代价就是效率[6-7]也是最低的,对于数据完整性差、错误较多情况适用,适用于数据传输信号不稳定、单帧/包的数据长度不固定或者无法计算的情况。

第二种方式对于接收、数传信道正确、稳定的数据,或者经过初步预处理的数据,效率最高,同时适应性也是最差的。本次模拟[8]的数据样本有非常完整的数据,省掉了搜索匹配的地址位移和同步头匹配的操作,可以较大提高执行效率。

第三种方法是结合前两种方法,对数传中会出现误码,数据完整性相对较好的情况,既需要步进查找,而且在出现误码时进行回溯查找。

2.3  数据去重复

因为地面接收站在接收卫星下传数据时,卫星采用循环播放下传方式,地面站接收时间较长,接收几个周期的卫星下传,所以会造成数据重复的现象,由于数据时间根据计划可以获得,根据时间制定哈希表去重复。

遍历搜索方法是大家应用的比较多的方法,利用类似于STL中list的存储,对新获得的包时间与已存储的数据的包时间进行比较去重复。

哈希表去重复是在数据有一定的连贯性,例如时间数据,以整秒进行递增,可以建立有限的空间的哈希表,初始化为0,对于获得的数据标记为1,对于已经标记过为1的数据判为重复数据,不再进行后续处理。如果帧计数为连续并且计数的最大值和最小值的差相对较小,也可根据帧计数制订哈希表去重复。

第一种方法是使用第三方库中现有方法或者依靠循环遍历使用不同查找的方法,每次遍历都不能直接找到重复数据,如果数据不重复则需要从前到后比对一遍,遍历和比对造成时间消耗较大,可比较的数据元素的个数越多消耗越大。

第二种方法使用的创建哈希对照表的方法,通过计算时间差来获得相对步进,从而支持了随机访问,存储空间消耗相同,但是在时间性能上有较大提高,对于数据的时间跨度越大越明显。哈希表的创建有局限性,对于连续的跨度在可接受范围内的数据可以创建,如果创建哈希表代价过大需要根据实际情况进行分析。

2.4  数据并行处理

在解析数据时,帧和包数据的解析可以并行[9-10]处理,同时也可以在数据包内部进行并行。

(1)数据帧和数据包分两个线程进行处理。

(2)数据帧和数据包分两个线程进行处理,同时在数据包解析后,由于包与包之间在数据解析过程中不存在关联关系,将每包数据视为独立的数据片段。考虑到寻找下一包的时间消耗远小于对一包数据的运算,可以使用一个线程进行解析获得每包的数据片段,把获得的数据包放入包处理的线程池中进行后续处理,包搜索线程同时搜寻下一包。

第一种方法是创建帧和包处理的的双线程/进程通过文件/内存方式进行交互处理,同时处理帧和包数据。

第二种方法使用在帧和包并行处理的同时,由于单包的数据运算量较大,所以通过线程池/进程池等方法实现数据包的并行处理,处理方式如所示。

3  仿真及算法过程

3.1  仿真环境

实验在64位Linux环境下进行,计算机处理器Inter(R) Core(TM) i5-4200 CPU @ 1.60GHZ 2.30,内存4.00GB,实验执行采用Windows客户端远程调用方式。编写简单的创建数据源的软件,模拟创建了六批数据样本,用于比较解帧、去重复和并行处理各两批数据样本。

3.2  实验验证

3.2.1  实验过程

第一组实验针对数据解析算法的比较,数据样本的两组数据特点:

(1)原始数据完整,帧按照1024步进完整,包数据长度随机为1M左右;

(2)在完整的原始数据基础上添加错误帧长、丢帧和错误包长的情况。

第二组实验比较两种排序算法的效率问题:

(1)按照时间2018-01-01 00:00:00~2018-01-01 01:00:00,一秒一个节拍,一共1小时:3600个数据时间点用于去重复,五倍的重复数据;

(2)按照时间2018-01-01 00:00:00~2018-01-01 10:00:00,一秒一个节拍,一共10小时:36000个数据时间点用于去重复,五倍的重复数据。

第三组实验比较单线程和线程池处理包的效率问题:

(1)原始数据完整,帧按照1024步进完整,包数据长度随机为1M左右,数据类型分为全脉冲和中频两种,总数据量1GB;

(2)原始数据完整,帧按照1024步进完整,包数据长度随机为10M左右,数据类型分为全脉冲和中频两种,总数据量1GB。

3.2.2  實验结果

部分实验运行结果如下图所示。

第一组实验,具体结果参见表。

第一种逐字节查询算法通过逐个字节的累加把每个位置的数据都与同步头进行匹配,由于每个位置的数据都进行了匹配,所以容错能力强,但是自身执行效率低。

第二种通过固定步进查找,匹配到一个同步头后,当前位置加上步进直接获得下一个同步头,算法执行效率高,如果中间数据有错误或丢失将无法继续匹配查找,没有容错能力,所以第二组数据无法通过测试[11]。当数据经过去除错误数据的初步处理,可以选择这种方法,执行效率高,程序实现简单。

第三种算法结合了前两种方法的方式,具备了容错能力和速度处理能力,由于需要结合两种方法做程序设计,所以在编程实现过程中相对复杂。

第二组实验,具体结果参见表。

使用STL中的list对数据进行去重复,第一组数据有3600个点,获得一个时间点后需要与已经记录的时间点作比较,比较次数为1到3600。使用哈希表方法每次需要计算当前包系统时间与数据起始时间的差值,获得差值后可以直接访问哈希表中对应的数据,比较一次可以就可以判断是否重复。哈希表多一个计算时间差过程,极大的减少了查询比较次数。

从第二组数据的实验结果可看出,时间点个数增加,包时间数据的维度增加,第一种方法需要比较的次数也增加,比较次数从1到3600变成1到36000,需要消耗更多时间。使用哈希表的方法时间消耗只与总共需要比较的包时间个数有关,所以时间数据维度的增加在时间消耗上线性增长,但是远小于第一种方法。

第三组实验,具体结果参见表。

使用单线程对包数据进行参数解算,线程搜索匹配包同步头后进行参数解算,一直到所有数据处理结束,整个过程是顺序的过程,总的时间消耗为每一步时间消耗的总和。使用线程池进行计算,主线程搜索匹配包同步头,获得一包数据后交给线程池中的子线程进行计算,直到所有数据搜索匹配结束并且包解算子线程都完成计算,整个过程是并行交互的过程,处理同时进行降低了总时间的消耗。

第二组数据的包数据长度增加,包内解算的运算量随之增加。由于更多的时间消耗的处理在线程池中进行,所以线程池并行处理的效果更明显。

3.3  实验结果分析

通过分析和实验验证,得出如下结论:

第一组实验:

(1)第一种逐字节查询算法容错能力强,错误数据影响小,但是自身执行效率低;

(2)第二种算法执行效率高,没有容错能力;

(3)第三种算法效率高,具有容错能力,错误数据影响较小。

第二组实验:

(1)建立哈希表去重复算法,效率高;

(2)两种方法对于时间点的增长,时间消耗都保持线性增长。

第三组实验:

(1)利用线程池比单线程效率高;

(2)单包内运算量越大、处理耗时越长,效果越明显。

4  结论

本文首先概述了通信协议的数据解析的关键技术和算法。根据卫星通讯需求,构建了一种数据解析的节本框架。在一定的通讯协议下,针对不同场景的数据样本,给出了不同的解析算法。通过实验分析对各种解析算法的处理能力、容错性、效率进行了分析和比较。依据并行设计的原理,增加了线程池在数据解析过程中的使用,通过合理利用计算资源,较大的提高执行效率。在优化通信协议的数据解析算法的研究方面做了有意义的尝试与实践,并做了相应的实验,对学习和工作有一定的指导作用。

参考文献

[1] 蔡治军. 基于因特网IPv6协议的数字视频传输系统的应用与研究[D]. 暨南大学, 2003年.

[2] 陈金超, 谢东亮. 无线网络TCP 拥塞控制算法研究综述[J]. 软件, 2015, 36(1): 82-87.

[3] 李峰, 陈向益. TCP\IP协议分析与应用编程. 人民邮电出版社, 2006.8.

[4] 庞之浩. 英国新一代军用通信卫星亮相太空. 中国航天, 2007(7)-28-31.

[5] 翁子凡, 邓伟. 互联网络TCP 单向时延被动测量方案[J]. 软件, 2015, 36(1): 47-50.

[6] 岳鋼, 王楠. 网络学习中知识可视化效率研究[J]. 软件, 2015, 36(2): 92-96.

[7] 王梓斌. 线性非再生双向中继协同无线通信关键技术研究. 国防科学技术大学, 2012.

[8] 曹龙江, 张勖, 王锟, 等. 网络应用流量模拟技术[J]. 软件, 2015, 36(2): 14-19.

[9] 刘皓. 分布式环境下可靠数据同步及通讯的协议分析[J].软件, 2015, 36(9): 113-116.

[10] 王欢. 分布式移动性管理协议研究[J]. 软件, 2015, 36(2): 80-85.

[11] 王云. 《软件测试》课程教学探索与思考[J]. 软件, 2015, 36(7): 129-131.

猜你喜欢
通信协议预处理
DCS本地总线通信协议与FFH1设备互操作技术研究与实现
电子计算机联锁系统通信协议设计和应用
基于Z-Stack通信协议栈的红外地温采集电路设计
基于预处理MUSIC算法的分布式阵列DOA估计
基于DMX512通信协议的多路转发器设计与研究
浅谈PLC在预处理生产线自动化改造中的应用
基于NS-3的PLC多频通信协议仿真平台设计与实现
络合萃取法预处理H酸废水
PMU数据预处理及压缩算法
基于自适应预处理的改进CPF-GMRES算法