LTE空口监测仪基带板原始数据保存、查询及回放方法
技术领域
本发明涉及LTE空口监测仪的设计技术,具体涉及到一种LTE空口监测仪基带板原始数据保存、查询及回放方法。
背景技术
LTE空口监测仪是采集和解析LTE空口信号的仪器,其产生是LTE网络架构扁平化的结果,相对于3G网络,LTE网络减少了无线网络控制器RNC网元和Iub接口。在3G网络中可通过Iub接口监测的信息,在LTE网络中需要在Uu接口监测获取,由此,空口监测仪表的作用尤为重要。
Iub是RNC和NODE B之间的接口,用来传输RNC和NODE B之间的信令以及来自无线接口的数据。空中接口(无线接口)主要用来建立、重配置和释放各种无线承载业务,和Iu接口一样,空中接口也是一个完全开放的接口。
现有技术LTE空口监测仪通常包括输入数据解析模块、数据存储模块、LTE载荷数据解析模块、无线资源控制RRC解析模块和配置模块。其中,输入数据解析模块主要功能是获取其他单板写入的数据,并进行解析分类,然后把数据传递给对应的后续处理模块。数据存储模块功能主要是存储输入数据,并包含数据查询;LTE载荷数据解析模块主要功能是解析输入的LTE载荷,包含媒体接入控制MAC子层、无线链路控制RLC子层及分组汇聚协议PDCP子层等LTE Layer2协议解析;RRC解析模块主要功能是解析信令无线承载SRB0、SRB1、SRB2数据,并把基带板需要的配置信息传输给基带板;配置模块的主要功能是根据输入数据或者解析结果配置层二板及基带板。
现有技术LTE空口监测仪表中,层二板需要与基带板及主控板进行数据交互,在基带板的原始数据保存查询及回放的过程中,需要占用较大的存储空间,使其对原始数据查询工作困难,很难对原始数据做到有序的回放。
显然,现有技术LTE空口监测仪表存在着基带板在原始数据保存查询及回放的过程中,需要占用较大的存储空间,使其对原始数据查询工作困难,很难对原始数据做到有序的回放等问题。
发明内容
为解决现有技术LTE空口监测仪表存在的基带板在原始数据保存查询及回放的过程中,需要占用较大的存储空间,使其对原始数据查询工作困难,很难对原始数据做到有序的回放等问题,本发明提出一种LTE空口监测仪基带板原始数据保存、查询及回放方法。
本发明LTE空口监测仪基带板原始数据保存、查询及回放方法,采用数据文件和索引文件的方式保存、查询或回放数据;在读取基带板原始数据的同时对每一个基带板原始数据按基带板卡独立连续的编号,为每一个数据包创建索引节点信息并记录其大小和存储在数据文件中的位置;同时,将原始数据保存在数据文件中的对应位置,将索引节点信息保存在索引文件中。
进一步的,所述数据文件和索引文件采用不同的后缀名,所述数据文件的后缀名为.dat,用于保存基带板原始数据,采用cardid_datanum.dat方式命名,其中,cardid为不同的基带板编号,datanum为数据段编号,从0开始,当该文件长度超过1GBytes时datanum依自然数依次增加;所述索引文件后缀名为.idx文件,用于搜索基带板原始数据在.dat文件中的偏移地址及长度,包括,基带板原始数据查询索引cardid_idxnum.idx文件和基带板原始数据回放索引recordname_pbidxnum.idx文件;基带板原始数据的存放结构即为一个名称为recordname的文件下存放有基带板原始数据查询索引文件cardid_idxnum.idx、基带板原始数据回放索引文件recordname_pbidxnum.idx和基带板原始数据保存文件cardid_datanum.dat。
其中:
recordname为主控板通过发送层二板存储记录名称设定数据包请求层二板为该条记录设置的名称。
cardid_idxnum.idx为基带板原始数据查询索引文件,用于对基带板原始数据查询;文件中保存有编号为cardid的基带板原始数据媒体接入控制层分组数据单元MAC PDU的索引,每一个文件包含10000000个索引节点,可实现主控板查询原始数据MAC PDU,主控板在查询时只需提供sequence number,简写为seq_num;层二板可以根据record name和seq_num快速查找到指定序列号的原始数据MAC PDU位于cardid_datanum.dat的位置及长度。
recordname_pbidxnum.idx为基带板原始数据回放索引文件,用于对基带板原始数据进行回放,在读取到所有基带板原始数据之后,将各基带板原始数据的索引节点依次写入到该文件,可实现基带板原始数据回放,在回放时依次读取索引节点中的每一个数据包的位置,并按照首次读入数据的时序进行回放。
cardid_datanum.dat为基带板原始数据保存文件,cardid为基带板卡编号,该文件最大为1GBytes。
进一步的,每个.idx文件中存放若干个索引节点search_index_node数据结构,并且,
search_index_node数据结构如下:
基带板原始数据MAC PDU查询请求数据子包载荷结构如下:
基带板原始数据MAC PDU回放请求数据子包载荷结构如下:
并且,定义PKT_REQUEST_QUERY_MAC_PDU原始数据查询子包为常量0x1400,PKT_REQUEST_PLAYBACK_MAC_PDU原始数据回放子包为常量0x1401,定义big_pkt_data,big_pkt_size变量,用以判断解析结果。
进一步的,所述LTE空口监测仪基带板原始数据保存,包括以下步骤:
层二板接收到基带板原始数据后均需要对其进行保存,各基带板原始数据的保存相互独立且同时进行,各基带板原始数据的保存流程如下:
S11:基带板原始数据输入;
S12:层二板软件接收基带板原始数据并存入数据缓存区;
S13:对每个原始数据包按照不同基带板卡号进行编号,计算数据包在文件中的结束位置和长度,填写查询索引节点数据结构至索引缓冲区;
S14:判断缓冲区是否已满,或者文件是否大于1GBytes,两者满足其一即执行步骤S15,否则,执行步骤S16;
S15:将数据缓存区的原始数据和查询索引缓冲区的索引数据分别写入cardid_datanum.dat文件中和cardid_idxnum.idx文件中;该基带板原始数据和查询索引数据保存完成,执行步骤S16;
其中,所述cardid_datanum.dat文件用于保存基带板的原始数据,其中,cardid为不同的基带板编号,datanum为数据段编号,从0开始,当该文件长度超过1GBytes时datanum依自然数依次增加;
所述cardid_idxnum.idx为基带板原始数据查询索引文件,用于对基带板原始数据查询;文件中保存有编号为cardid的基带板原始数据媒体接入控制层分组数据单元MACPDU的索引,每一个文件包含10000000个索引节点,可实现主控板查询原始数据MAC PDU,主控板在查询时只需提供sequence number,简写为seq_num;层二板可以根据record name和seq_num快速查找到指定序列号的原始数据MAC PDU位于cardid_datanum.dat的位置及长度;
S16:将各板卡的索引缓冲按板卡号依次连续的拷贝到另一块索引缓冲区,不进行数据存储;
S17:将回放索引缓冲区数据写入recordname_pbidxnum.idx文件中,该基带板回放索引数据保存完成;
所述recordname_pbidxnum.idx为基带板原始数据回放索引文件,用于对基带板原始数据进行回放,在读取到所有基带板原始数据之后,将各基带板原始数据的索引节点依次写入到该文件,可实现基带板原始数据回放,在回放时依次读取索引节点中的每一个数据包的位置,并按照首次读入数据的时序进行回放;并且,每个.idx文件中存放若干个索引节点search_index_node数据结构,并且,search_index_node数据结构如下:
S18:更新原始数据存储文件cardid_datanum.dat、查询索引文件cardid_idxnum.idx、回放索引文件recordname_pbidxnum.idx结尾位置,以进行下次的原始数据存储;
S19:基带板原始数据保存流程结束。
进一步的,所述LTE空口监测仪基带板原始数据查询,包括以下步骤:
层二板在接收到一个查询请求数据子包PKT_REQUEST_QUERY_MAC_PDU,将会进入到基带板原始数据媒体接入控制层分组数据单元MAC PDU查询处理流程,流程如下:
S21:层二板接收主控板原始数据包;
S22:层二板对主控板原始数据包进行解析,解析原始数据包类型;
S23:判断原始数据包的类型是否为0x1400,即是否为查询请求数据子包PKT_REQUEST_QUERY_MAC_PDU,是则,执行步骤S24,否则,不能进入数据查询流程,转为执行步骤S27;
S24:解析查询请求数据子包得到基带板原始数据MAC PDU查询请求数据子包载荷REQ_MACPDU_sub_payload,基带板原始数据MAC PDU查询请求数据子包载荷结构如下:
根据该结构获取需要查询的存储记录名称recordname、索引号seq_num、板卡号cardid;
通过REQ_MACPDU_sub_payload结构体中的成员name得到recordname;
通过成员seq_num_HI的高4bit得到cardid;
通过成员seq_num_HI的低28bit向左移位28bit与成员seq_num_LO相或得到seq_num;
通过seq_num/10000000得到idxfilenum;
通过(seq_num%10000000)*sizeof(search_index_node)得到在cardid_idxnum.idx中的偏移为idx_offset;
在cardid_idxnum.idx读取偏移为idx_offset的索引节点struct_search_index_node idx_node;
通过索引文件结构体参量idx_node.pkt_len得到原始数据MAC PDU长度pktlen;
通过idx_node.file_num得到datfilenum;
通过idx_node.end_offset得到原始数据MAC PDU在cardid_datfilenum.dat中的偏移位置dat_offset;
在cardid_datnum.dat的dat_offset位置读取pktlen长度的数据即得到了所需的原始数据MAC PDU;
S25:初始化big_pkt_data为空,big_pkt_size为0;根据板卡号cardid和索引号seq_num,读取文件找到指定的原始数据MAC PDU所在位置,更新big_pkt_data,big_pkt_size;
S26:判断big_pkt_data是否为空或者big_pkt_size是否为0,两者满足其一,说明未找到查询数据,发送定义为0x1303常量的PKT_QUERY_MAC_PDU_ACK应答包,转为执行步骤S27;否则,将找到的原始数据MAC PDU数据包重组,并将组包后的数据发送到主控板,数据查询完成;
S27:基带板原始数据查询流程结束。
进一步的,所述LTE空口监测仪基带板原始数据回放,包括以下步骤:
层二板在接收到一个回放请求数据子包PKT_REQUEST_PLAYBACK_MAC_PDU后,将会进入到基带板原始数据媒体接入控制层分组数据单元MAC PDU回放处理流程,流程如下:
S31:层二板接收主控板原始数据包;
S32:层二板对主控板原始数据包进行解析,解析原始数据包类型;
S33:判断该原始数据包类型是否为0x1401,即是否为回放请求数据子包PKT_REQUEST_PLAYBACK_MAC_PDU,若是,执行步骤S34,否则,不能进入数据回放流程,转为执行步骤S37;
S34:解析回放请求数据子包得到基带板原始数据MAC PDU回放请求数据包载荷PLAYBACK_MACPDU_sub_payload,并且,基带板原始数据MAC PDU回放请求数据子包载荷结构如下:
通过该结构获取需要回放的存储记录名称recordname,并在存储区查找该记录;
读取第一个文件recordname_0.idx开始,读取该文件中的每一个索引节点struct_search_index_node idx_node,根据结构体成员idx_node.pkt_len得到原始数据MAC PDU长度pktlen;根据结构体成员idx_node.file_num得到datfilenum,根据结构体成员idx_node.end_offset得到原始数据MAC PDU在cardid_datnum.dat中的偏移dat_offset;
在cardid_datnum.dat的dat_offset位置读取pktlen长度的数据即得到了所需的原始数据MAC PDU;
S35:初始化big_pkt_data为空,big_pkt_size为0;根据板卡号cardid和索引号seq_num,读取文件找到指定的原始数据MAC PDU所在位置,更新big_pkt_data,big_pkt_size;
S36:判断big_pkt_data是否为空或者big_pkt_size是否为0,两者满足其一,退出该流程,即未查询到请求回放的原始数据MAC PDU,转为执行步骤S37;否则,数据回放完成,进入LTE载荷处理,并将原始数据交给层二协议栈处理;
S37:基带板原始数据回放流程结束。
本发明LTE空口监测仪基带板原始数据保存、查询及回放方法的有益技术效果是可实现主控板快速准确地查找到指定的原始数据MAC PDU以及对原始数据按照输入的时序有序地进行回放操作,有利于Layer2软件数据解析,提高解析效率。
附图说明
附图1为本发明LTE空口监测仪基带板原始数据保存流程示意图;
附图2为本发明LTE空口监测仪基带板原始数据查询流程示意图;
附图3为本发明LTE空口监测仪基带板原始数据回放流程示意图。
下面结合附图对本发明LTE空口监测仪基带板原始数据保存、查询及回放方法作进一步的说明。
具体实施方式
显而易见地,下面描述中的附图仅仅是本发明的一些实施例,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明LTE空口监测仪基带板原始数据保存、查询及回放方法,采用数据文件和索引文件的方式保存、查询或回放数据;在读取基带板原始数据的同时对每一个基带板原始数据按基带板卡独立连续的编号,为每一个数据包创建索引节点信息并记录其大小和存储在数据文件中的位置;同时,将原始数据保存在数据文件中的对应位置,将索引节点信息保存在索引文件中。其中,所述数据文件和索引文件采用不同的后缀名,所述数据文件的后缀名为.dat,用于保存基带板原始数据,采用cardid_datanum.dat方式命名,其中,cardid为不同的基带板编号,datanum为数据段编号,从0开始,当该文件长度超过1GBytes时datanum依自然数依次增加;所述索引文件后缀名为.idx文件,用于搜索基带板原始数据在.dat文件中的偏移地址及长度,包括,基带板原始数据查询索引cardid_idxnum.idx文件和基带板原始数据回放索引recordname_pbidxnum.idx文件;基带板原始数据的存放结构即为一个名称为recordname的文件下存放有基带板原始数据查询索引文件cardid_idxnum.idx、基带板原始数据回放索引文件recordname_pbidxnum.idx和基带板原始数据保存文件cardid_datanum.dat;
其中:
recordname为主控板通过发送层二板存储记录名称设定数据包请求层二板为该条记录设置的名称。
cardid_idxnum.idx为基带板原始数据查询索引文件,用于对基带板原始数据查询;文件中保存有编号为cardid的基带板原始数据媒体接入控制层分组数据单元MAC PDU的索引,每一个文件包含10000000个索引节点,可实现主控板查询原始数据MAC PDU,主控板在查询时只需提供sequence number,简写为seq_num;层二板可以根据record name和seq_num快速查找到指定序列号的原始数据MAC PDU位于cardid_datanum.dat的位置及长度。
recordname_pbidxnum.idx为基带板原始数据回放索引文件,用于对基带板原始数据进行回放,在读取到所有基带板原始数据之后,将各基带板原始数据的索引节点依次写入到该文件,可实现基带板原始数据回放,在回放时依次读取索引节点中的每一个数据包的位置,并按照首次读入数据的时序进行回放。
cardid_datanum.dat为基带板原始数据保存文件,cardid为基带板卡编号,该文件最大为1GBytes。
为便于原始数据查询和回放,本发明LTE空口监测仪基带板原始数据保存、查询及回放方法的每个.idx文件中存放若干个索引节点search_index_node数据结构,并且,
search_index_node数据结构如下:
基带板原始数据MAC PDU查询请求数据子包载荷结构如下:
基带板原始数据MAC PDU回放请求数据子包载荷结构如下:
并且,定义PKT_REQUEST_QUERY_MAC_PDU原始数据查询子包为常量0x1400,PKT_REQUEST_PLAYBACK_MAC_PDU原始数据回放子包为常量0x1401,定义big_pkt_data,big_pkt_size变量,用以判断解析结果。
附图1为本发明LTE空口监测仪基带板原始数据保存流程示意图,由图可知,所述LTE空口监测仪基带板原始数据保存,包括以下步骤:
层二板接收到基带板原始数据后均需要对其进行保存,各基带板原始数据的保存相互独立且同时进行,各基带板原始数据的保存流程如下:
S11:基带板原始数据输入;
S12:层二板软件接收基带板原始数据并存入数据缓存区;
S13:对每个原始数据包按照不同基带板卡号进行编号,计算数据包在文件中的结束位置和长度,填写查询索引节点数据结构至索引缓冲区;
S14:判断缓冲区是否已满,或者文件是否大于1GBytes,两者满足其一即执行步骤S15,否则,执行步骤S16;
S15:将数据缓存区的原始数据和查询索引缓冲区的索引数据分别写入cardid_datanum.dat文件中和cardid_idxnum.idx文件中;该基带板原始数据和查询索引数据保存完成,执行步骤S16;其中,
所述cardid_datanum.dat文件用于保存基带板的原始数据,其中,cardid为不同的基带板编号,datanum为数据段编号,从0开始,当该文件长度超过1GBytes时datanum依自然数依次增加;
所述cardid_idxnum.idx为基带板原始数据查询索引文件,用于对基带板原始数据查询;文件中保存有编号为cardid的基带板原始数据媒体接入控制层分组数据单元MACPDU的索引,每一个文件包含10000000个索引节点,可实现主控板查询原始数据MAC PDU,主控板在查询时只需提供sequence number,简写为seq_num;层二板可以根据record name和seq_num快速查找到指定序列号的原始数据MAC PDU位于cardid_datanum.dat的位置及长度;
S16:将各板卡的索引缓冲按板卡号依次连续的拷贝到另一块索引缓冲区,不进行数据存储;
S17:将回放索引缓冲区数据写入recordname_pbidxnum.idx文件中,该基带板回放索引数据保存完成;其中,
所述recordname_pbidxnum.idx为基带板原始数据回放索引文件,用于对基带板原始数据进行回放,在读取到所有基带板原始数据之后,将各基带板原始数据的索引节点依次写入到该文件,可实现基带板原始数据回放,在回放时依次读取索引节点中的每一个数据包的位置,并按照首次读入数据的时序进行回放;并且,每个.idx文件中存放若干个索引节点search_index_node数据结构,并且,search_index_node数据结构如下:
S18:更新原始数据存储文件cardid_datanum.dat、查询索引文件cardid_idxnum.idx、回放索引文件recordname_pbidxnum.idx结尾位置,以进行下次的原始数据存储;
S19:基带板原始数据保存流程结束。
附图2为本发明LTE空口监测仪基带板原始数据查询流程示意图,由图可知,所述LTE空口监测仪基带板原始数据查询,包括以下步骤:
层二板在接收到一个查询请求数据子包PKT_REQUEST_QUERY_MAC_PDU,将会进入到基带板原始数据媒体接入控制层分组数据单元MAC PDU查询处理流程,流程如下:
S21:层二板接收主控板原始数据包;
S22:层二板对主控板原始数据包进行解析,解析原始数据包类型;
S23:判断原始数据包的类型是否为0x1400,即是否为查询请求数据子包PKT_REQUEST_QUERY_MAC_PDU,是则,执行步骤S24,否则,不能进入数据查询流程,转为执行步骤S27;
S24:解析查询请求数据子包得到基带板原始数据MAC PDU查询请求数据子包载荷REQ_MACPDU_sub_payload,基带板原始数据MAC PDU查询请求数据子包载荷结构如下:
根据该结构获取需要查询的存储记录名称recordname、索引号seq_num、板卡号cardid;
通过REQ_MACPDU_sub_payload结构体中的成员name得到recordname;
通过成员seq_num_HI的高4bit得到cardid;
通过成员seq_num_HI的低28bit向左移位28bit与成员seq_num_LO相或得到seq_num;
通过seq_num/10000000得到idxfilenum;
通过(seq_num%10000000)*sizeof(search_index_node)得到在cardid_idxnum.idx中的偏移为idx_offset;
在cardid_idxnum.idx读取偏移为idx_offset的索引节点struct_search_index_node idx_node;
通过索引文件结构体参量idx_node.pkt_len得到原始数据MAC PDU长度pktlen;
通过idx_node.file_num得到datfilenum;
通过idx_node.end_offset得到原始数据MAC PDU在cardid_datfilenum.dat中的偏移位置dat_offset;
在cardid_datnum.dat的dat_offset位置读取pktlen长度的数据即得到了所需的原始数据MAC PDU;
S25:初始化big_pkt_data为空,big_pkt_size为0;根据板卡号cardid和索引号seq_num,读取文件找到指定的原始数据MAC PDU所在位置,更新big_pkt_data,big_pkt_size;
S26:判断big_pkt_data是否为空或者big_pkt_size是否为0,两者满足其一,说明未找到查询数据,发送定义为0x1303常量的PKT_QUERY_MAC_PDU_ACK应答包,转为执行步骤S27;否则,将找到的原始数据MAC PDU数据包重组,并将组包后的数据发送到主控板,数据查询完成;
S27:基带板原始数据查询流程结束。
附图3为本发明LTE空口监测仪基带板原始数据回放流程示意图,由图可知,所述LTE空口监测仪基带板原始数据回放,包括以下步骤:
层二板在接收到一个回放请求数据子包PKT_REQUEST_PLAYBACK_MAC_PDU后,将会进入到基带板原始数据媒体接入控制层分组数据单元MAC PDU回放处理流程,流程如下:
S31:层二板接收主控板原始数据包;
S32:层二板对主控板原始数据包进行解析,解析原始数据包类型;
S33:判断该原始数据包类型是否为0x1401,即是否为回放请求数据子包PKT_REQUEST_PLAYBACK_MAC_PDU,若是,执行步骤S34,否则,不能进入数据回放流程,转为执行步骤S37;
S34:解析回放请求数据子包得到基带板原始数据MAC PDU回放请求数据包载荷PLAYBACK_MACPDU_sub_payload,基带板原始数据MAC PDU回放请求数据子包载荷结构如下:
通过该结构可获取需要回放的存储记录名称recordname,并在存储区查找该记录;
读取第一个文件recordname_0.idx开始,读取该文件中的每一个索引节点struct_search_index_node idx_node,根据结构体成员idx_node.pkt_len得到原始数据MAC PDU长度pktlen;根据结构体成员idx_node.file_num得到datfilenum,根据结构体成员idx_node.end_offset得到原始数据MAC PDU在cardid_datnum.dat中的偏移dat_offset;
在cardid_datnum.dat的dat_offset位置读取pktlen长度的数据即得到了所需的原始数据MAC PDU;
S35:初始化big_pkt_data为空,big_pkt_size为0;根据板卡号cardid和索引号seq_num,读取文件找到指定的原始数据MAC PDU所在位置,更新big_pkt_data,big_pkt_size;
S36:判断big_pkt_data是否为空或者big_pkt_size是否为0,两者满足其一,退出该流程,即未查询到请求回放的原始数据MAC PDU,转为执行步骤S37;否则,数据回放完成,进入LTE载荷处理,并将原始数据交给层二协议栈处理;
S37:基带板原始数据回放流程结束。
显然,本发明LTE空口监测仪基带板原始数据保存、查询及回放方法的有益技术效果是可实现主控板快速准确地查找到指定的原始数据MAC PDU以及对原始数据按照输入的时序有序地进行回放操作,有利于Layer2软件数据解析,提高解析效率。