一种用于电调度自动化海量报文的黑匣子系统

申请号 CN201410770675.4 申请日 2014-12-12 公开(公告)号 CN104516953A 公开(公告)日 2015-04-15
申请人 国家电网公司; 国网浙江省电力公司; 杭州迪普科技有限公司; 发明人 陶涛; 宓群超; 张志群; 章立宗; 卢冰; 沈晓东; 顾伟敏; 叶海明; 余亮; 马国梁; 吴秋晗; 陈利跃;
摘要 一种用于电 力 调度自动化海量报文的黑匣子系统,本 发明 涉及一种黑匣子系统。目前,已有的网络通信黑匣子或网络通信记录装置基本上只是实现了网络通信报文的存储,并没有支持多维查询的索引机制。本发明包括:报文存储模 块 ;报文索引模块;报文查询模块;报文分析模块;业务语义信息展示模块。本技术方案可以完整真实的保存电力调度自动化网络交互过程的所有报文数据,在后续故障 定位 时,可以快速按需查询网络通信报文用于故障定位;且查询的报文经黑匣子分析之后,能将详细的语义信息清晰的展示给用户,对排查故障起了很大的帮助。
权利要求

1.一种用于电调度自动化海量报文的黑匣子系统,其特征在于包括:
报文存储模:实时接收报文,按照到达黑匣子的电力调度自动化报文时序顺序存储,存储格式为文件或者数据库;对于文件格式,按时间周期或报文数量或报文文件大小或三种方式组合来根据时序分写成多个文件;
报文索引模块:基于协议或者应用的语义设置索引字段,使用MD-tree在内存和硬盘上构建内存索引和文件索引;
报文查询模块:接受用户的查询请求,查询报文索引模块中构建的内存索引和文件索引,获取符合查询请求的报文或报文在报文文件中的位置及长度,将其返回给用户;若是返回给用户的为报文,用户可以直接用于后续分析;若是返回给用户为报文在报文文件中的位置及长度,用户根据其获取报文,用于后续分析;
报文分析模块:读取报文查询模块获取的报文文件,解析报文二层、三层、四层直至应用层的所有语义信息;
业务语义信息展示模块:获取报文分析模块解析的不同协议和应用语义信息,通过UI形式展示给用户。
2.根据权利要求1所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:报文存储模块中文件种类包括:
a)报文文件:报文文件为时戳.dat,其对应的索引文件为:时戳.idx0、时戳.idx1,时戳.idx1对应的日志文件为时戳.log;
b)报文文件的清单文件:报文文件的清单文件为manifest.dat,写入的内容为报文文件名,即:时戳.dat;
c)日志文件的清单文件:日志文件的清单文件为manifest.log,写入的内容为尚未成功构建1索引文件对应的日志文件名,为时戳.log;若时戳.log对应的1索引文件时戳.idx1已成功构建,则在manifest.log中去除时戳.log记录。
3.根据权利要求2所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:当黑匣子系统接收到首个网络通信报文时,黑匣子报文存储模块创建当前报文文件:
*.dat,黑匣子报文索引模块创建当前0索引文件:*.idx0,当前1索引文件*.idx1及其日志为*.log;黑匣子报文索引模块将当前报文文件文件名*.dat写入报文文件的清单文件manifest.dat,将当前1索引文件的日志文件名*.log写入日志文件的清单文件manifest.log;后续依据报文文件的清单文件manifest.dat中的报文文件名,访问黑匣子记录的所有报文文件,或按时间范围初步查询到报文所在的报文文件;后续依据日志文件的清单文件manifest.log中的报文文件名,访问到未构建完成的1索引文件对应的日志文件,依据日志文件可以重建其对应的1索引文件。
4.根据权利要求3所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:黑匣子报文存储模块按报文到达时序将报文及其实时计算的报文加密校验值顺序写入到当前报文文件,即:*.dat,将当前报文时戳、报文文件偏移、报文长度、业务类型、源IP、目的IP、应用类型提交给黑匣子报文索引模块;黑匣子报文索引模块将报文时戳、报文文件偏移,报文长度顺序写入当前0索引文件*.idx0,产生报文文件中的报文序号seq_id;将报文序号seq_id、业务类型、源IP、目的IP、应用类型顺序写入当前日志文件*.log,同时使用MD-tree在内存中构建内存索引,达到内存阈值后,写入到当前1索引文件*.idx1;对于
1索引文件的写入,若黑匣子系统内存大到足以存储当前报文文件的1索引文件的所有索引时,使用MD-tree构建内存索引,在更新报文文件时,一次性将内存索引写入到1索引文件中。
5.根据权利要求4所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:为时间周期、报文数量或报文文件大小设置对应的三个阈值,当任意一个阈值达到时,黑匣子报文存储模块结束当前报文文件*.dat写入,创建下一个报文文件*’.dat;同时,索引模块创建0索引文件*’.idx0、1索引文件*’.idx1及其日志为*’.log;黑匣子报文索引模块将报文文件文件名*’.dat写入报文文件的清单文件manifest.dat,将1索引文件的日志文件名*’.log写入日志文件的清单文件manifest.log;对于本次报文,当前报文文件更新为*’.dat,当前0索引文件为*’.idx0,当前1索引文件为*’.idx1及其日志为*’.log;对于老的日志文件*.log,索引模块将内存中的MD-tree内存索引写入到1索引文件*.idx1中,删除日志文件的清单文件manifest.log中的*.log记录。
6.根据权利要求2所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:黑匣子在写入报文时,需要写入三个文件,即:报文文件,0索引文件和1索引文件的日志文件,间隙性地更新1索引文件;在更新存储报文文件时,更新报文文件的清单文件manifest.dat和当前1索引文件和日志文件的清单文件manifest.log。
7.根据权利要求1所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:黑匣子报文查询模块提供多维数据查询;多维数据包括业务、源IP、目的IP、应用类型、应用数据片段、时间范围中的一种或多种组合。
8.根据权利要求2所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:
查询报文时,若需查询当前索引,从MD-tree内存索引和1索引文件中查询报文,否则从1索引文件中查询;
当仅为时间范围查询时,先访问报文文件的清单文件manifest.dat,确定起始时间对应的首个报文文件和结束时间对应的末尾报文文件,再访问首个报文文件的0索引文件,查找起始时间对应的首个报文的报文文件偏移、报文长度,从首个报文文件中依据报文文件偏移和报文长度获取报文内容,使用报文加密校验值对其校验,若校验通过,将该报文输出到结果报文缓存或结果报文文件;访问末尾报文文件的0索引文件,查找结束时间对应的末尾报文的报文文件偏移,报文长度,从末尾报文文件中依据报文文件偏移和报文长度获取报文内容,使用报文加密校验值对其校验,若校验通过,将该报文输出到结果报文缓存或结果报文文件;对首个报文和末尾报文之间的报文,按序对报文文件中的文件校验其报文加密校验值,若校验通过,将该报文输出到结果报文缓存或结果报文文件;
当按业务、源IP、目的IP、应用类型、应用数据片段、时间范围查询时,访问报文文件的清单文件manifest.dat,确定起始时间对应的首个报文文件和结束时间对应的末尾报文文件,再访问首个报文文件的1索引文件,依据对应的业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中获取时戳符合时间范围的列表,依据列表中的报文文件偏移、报文长度从首个报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件;
对于结果报文,报文分析模块将报文应用数据根据业务协议规约作进一步解析,然后将解析结果提交给业务语义信息展示模块,直观的展示给用户;用户可选择将结果报文导出备份。
9.根据权利要求8所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:
顺序访问首个报文文件和末尾报文文件之间的报文文件,访问报文文件的1索引文件,依据业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中列表,依据列表中的报文文件偏移、报文长度从报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件;
访问末尾报文文件的1索引文件,依据业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中获取时戳符合时间范围的列表,依据列表中的报文文件偏移、报文长度从首个报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件。
10.根据权利要求2所述的一种用于电力调度自动化海量报文的黑匣子系统,其特征在于:当电力自动化海量报文黑匣子出现异常掉电时,黑匣子索引恢复模块首先从日志清单文件manifest.log中访问索引日志文件名,对于非当前1索引日志文件,读取日志文件中的内容重建该日志对应的1索引文件,构建成功后,将该日志文件名从manifest.log中清除。

说明书全文

一种用于电调度自动化海量报文的黑匣子系统

技术领域

[0001] 本发明涉及一种黑匣子系统,尤指一种用于电力调度自动化海量报文的黑匣子系统。

背景技术

[0002] 随着电力系统和计算机技术、通信技术、控制技术的发展,变电站自动化系统走向了数字化的时代。IEC TC57的第3工作组(WG03)在IEC60870-5的基础上制订了一系列的配套标准,IEC60870-5-101用于常规远动,IEC60870-5-102用于电能累计量传输,IEC60870-5-103用于继电保护信息传输,IEC60870-5-104则是IEC60870-5-101在TCPIP上的应用。随着电子式互感器、智能断路器、通信技术的发展,推动着IEC61850标准的制定。变电站自动化系统中,通信系统是信息利用和流动的枢纽,通信系统的信息吞吐、处理能力、开放程度和运行可靠性是变电站自动化系统的主要指标。
[0003] 数字化变电站中,原先传送模拟量和开关量的大量错综复杂的电缆被一些网络设备和网线光纤所代替,信息的交互由基于硬接线方式改为TCPIP网络通讯方式实现。智能电子设备和通信网络的健康状况将直接影响整个数字化变电站的安全运行。TCPIP网络报文的收发异常或故障均可能导致电力系统重大事故。近两年来,调度自动化系统在运行中出现了较多异常现象,部分异常现象甚至影响了电网调度运行和集中监控。几年来的自动化运行分析报告显示,除常规功能性缺陷外,仍有大量异常现象难以确定具体原因,只能给出初步判断,不利于调度自动化系统异常的消除,成为提升调度自动化系统运行平的瓶颈
[0004] 为此如何能完整的记录整个电力调度自动化系统中各智能单元之间的通信过程,回放和审视整个通信过程,为事后事故分析提供依据,成为基于IEC60870-5标准的新型数字化变电站急需解决的问题。
[0005] 现有的技术中有:
[0006] 1、论文[1]:记录设备的原理框图如图1所示。之所以采用无损记录方式以确保被监听通信报文的完整记录,而没有采用中央处理器(CPU)方式的原因是:当记录多个网口通信时,由于操作系统采用分时或中断处理方式,不能确保被监听网络通信在短报文高负载或突变通信流量下形成完整的记录。其只是实现了网络通信数据的实时保存,并没有构建索引,也没有按需查询与展示的功能。
[0007] 2、专利[2]公开了一种网络通信记录和分析系统,如图2所示。其将按时间周期性的形成的文件存入到存储模24,各报文文件可根据其来源端口及时标信息等进行命名。存储模块24每存储一个报文文件,均将该报文文件的文件名经通信模块25传送至信息分析设备30。专利按来源端口周期性的记录成报文文件,实际上已部分改变记录的网络场景,如不同来源端口的报文会相互影响,无法还原完整的故障场景。只是简单的根据端口来建立索引,无法满足多维查询的要求。
[0008] 3、专利[3]公开了一种用于数字化变电站网络通信记录装置的存储系统软件系统框图,如图3所示。其将采集的报文记录数据存入存储系统,数据防篡改模块对数据进行处理。专利[3]相对于论文[1]和专利[2]中公开的技术而言,只是增加了数据防篡改处理。该专利也没有索引机制和查询功能。
[0009] 从论文[1]、专利[2]和专利[3]公开的技术可以看出,已有的网络通信黑匣子或网络通信记录装置基本上只是实现了网络通信报文的存储,并没有支持多维查询的索引机制。

发明内容

[0010] 本发明要解决的技术问题和提出的技术任务是对现有技术方案进行完善与改进,提供一种用于电力调度自动化海量报文的黑匣子系统,以达到高效查询存储的报文的目的。为此,本发明采取以下技术方案。
[0011] 一种用于电力调度自动化海量报文的黑匣子系统,其特征在于包括:
[0012] 报文存储模块:实时接收报文,按照到达黑匣子的电力调度自动化报文时序顺序存储,存储格式为文件或者数据库;对于文件格式,按时间周期或报文数量或报文文件大小或三种方式组合来根据时序分写成多个文件;
[0013] 报文索引模块:基于协议或者应用的语义设置索引字段,使用MD-tree在内存和硬盘上构建内存索引和文件索引;
[0014] 报文查询模块:接受用户的查询请求,查询报文索引模块中构建的内存索引和文件索引,获取符合查询请求的报文或报文在报文文件中的位置及长度,将其返回给用户;若是返回给用户的为报文,用户可以直接用于后续分析;若是返回给用户为报文在报文文件中的位置及长度,用户根据其获取报文,用于后续分析;
[0015] 报文分析模块:读取报文查询模块获取的报文文件,解析报文二层、三层、四层直至应用层的所有语义信息;
[0016] 业务语义信息展示模块:获取报文分析模块解析的不同协议和应用语义信息,通过用户界面形式展示给用户。
[0017] 本技术方案可以完整真实的保存电力调度自动化网络交互过程的所有报文数据,该黑匣子采用加密校验值防篡改报文,基于认证方式,保证了数据的写入和查询访问的安全性。为解决发生电力故障时责任到人奠定了基础。多维索引文件的构建,在后续故障定位时,可以快速按需查询网络通信报文用于故障定位;且查询的报文经黑匣子分析之后,能将详细的语义信息清晰的展示给用户,对排查故障起了很大的帮助。
[0018] 作为对上述技术方案的进一步完善和补充,本发明还包括以下附加技术特征。
[0019] 报文存储模块将文件种类包括:
[0020] a)报文文件:报文文件为时戳.dat,其对应的0索引文件为:时戳.idx0、时戳.idx1,时戳.idx1对应的日志文件为时戳.log;
[0021] b)报文文件的清单文件:报文文件的清单文件为manifest.dat,写入的内容为报文文件名,即:时戳.dat;
[0022] c)日志文件的清单文件:日志文件的清单文件为manifest.log,写入的内容为尚未成功构建1索引文件对应的日志文件名,为时戳.log;若时戳.log对应的1索引文件时戳.idx1已成功构建,则在manifest.log中去除时戳.log记录。
[0023] 当黑匣子系统接收到首个网络通信报文时,黑匣子报文存储模块创建当前报文文件:*.dat,黑匣子报文索引模块创建当前0索引文件:*.idx0,当前1索引文件*.idx1及其日志为*.log;黑匣子报文索引模块将当前报文文件文件名*.dat写入报文文件的清单文件manifest.dat,将当前1索引文件的日志文件名*.log写入日志文件的清单文件manifest.log;后续依据报文文件的清单文件manifest.dat中的报文文件名,访问黑匣子记录的所有报文文件,或按时间范围初步查询到报文所在的报文文件;后续依据日志文件的清单文件manifest.log中的报文文件名,访问到未构建完成的1索引文件对应的日志文件,依据日志文件可以重建其对应的1索引文件。
[0024] 黑匣子报文存储模块按报文到达时序将报文及其实时计算的报文加密校验值顺序写入到当前报文文件,即:*.dat,将当前报文时戳、报文文件偏移、报文长度、业务类型、源IP、目的IP、应用类型提交给黑匣子报文索引模块;黑匣子报文索引模块将报文时戳、报文文件偏移,报文长度顺序写入当前0索引文件*.idx0,产生报文文件中的报文序号seq_id;将报文序号seq_id、业务类型、源IP、目的IP、应用类型顺序写入当前日志文件*.log,同时使用MD-tree在内存中构建内存索引,达到内存阈值后,写入到当前1索引文件*.idx1;对于1索引文件的写入,若黑匣子系统内存大到足以存储当前报文文件的1索引文件的所有索引时,使用MD-tree构建内存索引,在更新报文文件时,一次性将内存索引写入到1索引文件中。
[0025] 为时间周期、报文数量或报文文件大小设置对应的三个阈值,当任意一个阈值达到时,黑匣子报文存储模块结束当前报文文件*.dat写入,创建下一个报文文件*’.dat;同时,索引模块创建0索引文件*’.idx0、1索引文件*’.idx1及其日志为*’.log;黑匣子报文索引模块将报文文件文件名*’.dat写入报文文件的清单文件manifest.dat,将1索引文件的日志文件名*’.log写入日志文件的清单文件manifest.log;对于本次报文,当前报文文件更新为*’.dat,当前0索引文件为*’.idx0,当前1索引文件为*’.idx1及其日志为*’.log;对于老的日志文件*.log,索引模块将内存中的MD-tree内存索引写入到1索引文件*.idx1中,删除日志文件的清单文件manifest.log中的*.log记录。
[0026] 黑匣子在写入报文时,需要写入三个文件,即:报文文件,0索引文件和1索引文件的日志文件,间隙性地更新1索引文件;在更新存储报文文件时,更新报文文件的清单文件manifest.dat和当前1索引文件和日志文件的清单文件manifest.log。
[0027] 黑匣子报文查询模块提供多维数据查询;多维数据包括业务、源IP、目的IP、应用类型、应用数据片段、时间范围中的一种或多种组合。
[0028] 查询报文时,若需查询当前索引,从MD-tree内存索引和1索引文件中查询报文,否则从1索引文件中查询;
[0029] 当仅为时间范围查询时,先访问报文文件的清单文件manifest.dat,确定起始时间对应的首个报文文件和结束时间对应的末尾报文文件,再访问首个报文文件的0索引文件,查找起始时间对应的首个报文的报文文件偏移、报文长度,从首个报文文件中依据报文文件偏移和报文长度获取报文内容,使用报文加密校验值对其校验,若校验通过,将该报文输出到结果报文缓存或结果报文文件;访问末尾报文文件的0索引文件,查找结束时间对应的末尾报文的报文文件偏移,报文长度,从末尾报文文件中依据报文文件偏移和报文长度获取报文内容,使用报文加密校验值对其校验,若校验通过,将该报文输出到结果报文缓存或结果报文文件;对首个报文和末尾报文之间的报文,按序对报文文件中的文件校验其报文加密校验值,若校验通过,将该报文输出到结果报文缓存或结果报文文件;
[0030] 当按业务、源IP、目的IP、应用类型、应用数据片段、时间范围查询时,访问报文文件的清单文件manifest.dat,确定起始时间对应的首个报文文件和结束时间对应的末尾报文文件,再访问首个报文文件的1索引文件,依据对应的业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中获取时戳符合时间范围的列表,依据列表中的报文文件偏移、报文长度从首个报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件;
[0031] 对于结果报文,报文分析模块将报文应用数据根据业务协议规约作进一步解析,然后将解析结果提交给业务语义信息展示模块,直观的展示给用户;用户可选择将结果报文导出备份。
[0032] 顺序访问首个报文文件和末尾报文文件之间的报文文件,访问报文文件的1索引文件,依据业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中列表,依据列表中的报文文件偏移、报文长度从报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件;
[0033] 访问末尾报文文件的1索引文件,依据业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中获取时戳符合时间范围的列表,依据列表中的报文文件偏移、报文长度从首个报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件。
[0034] 电力自动化海量报文黑匣子出现异常掉电时,黑匣子索引恢复模块首先从日志清单文件manifest.log中访问索引日志文件名,对于非当前1索引日志文件,读取日志文件中的内容重建该日志对应的1索引文件,构建成功后,将该日志文件名从manifest.log中清除。实现黑匣子系统异常掉电重启后最新多维索引文件的重建。
[0035] 有益效果:
[0036] 本技术方案完整真实的保存电力调度自动化网络交互过程的所有报文数据,采用加密校验值防篡改报文,基于认证方式,保证了数据的写入和查询访问的安全性,为解决发生电力故障时责任到人的难题奠定了基础。多维索引文件的构建,在后续故障定位时,可以快速按需查询网络通信报文用于故障定位;且查询的报文经黑匣子分析之后,能将详细的语义信息清晰的展示给用户,对排查故障起了很大的帮助。附图说明
[0037] 图1是现有的通信黑匣子图。
[0038] 图2是现有的网络通信和分析系统结构图。
[0039] 图3是现有的数字化变电站网络通信记录装置的存储系统软件系统结构图。
[0040] 图4是本发明系统结构图。
[0041] 图5是本发明数据存储索引构建工作流程图
[0042] 图6是本发明数据分析还原工作流程图。

具体实施方式

[0043] 以下结合说明书附图对本发明的技术方案做进一步的详细说明。
[0044] 本发明包括报文存储模块、报文索引模块、报文查询模块、报文分析模块和业务语义信息展示模块。
[0045] 报文存储模块实时接收报文,严格按照到达黑匣子的电力调度自动化报文时序顺序存储,存储格式上可以是文件或者数据库。对于文件格式,可按时间周期或报文数量或报文文件大小或三种方式组合来根据时序分写成多个文件。
[0046] 报文索引模块对从报文中可以基于协议或者应用的语义设置索引字段,使用MD-tree在内存和硬盘上构建内存索引和文件索引。
[0047] 报文查询模块,接受用户的查询请求,查询报文索引模块中构建的内存索引和文件索引,高效获取符合查询请求的报文或报文在报文文件中的位置及长度,将其返回给用户。若是返回给用户为报文,用户可以直接用于后续分析;若是返回给用户为报文在报文文件中的位置及长度,用户根据其获取报文,用于后续分析。
[0048] 报文分析模块读取报文查询模块获取的报文文件,解析报文二层、三层、四层直至应用层的所有语义信息。
[0049] 业务语义信息展示模块获取报文分析模块解析的不同协议和应用语义信息,通过UI形式展示给用户。
[0050] 系统工作步骤,如图4所示:接收报文,报文周期性的写入按时戳命名的报文文件、按时戳命名的文件名写入清单文件、根据清单文件和报文信息构建索引。
[0051] 本发明设计的文件种类有:
[0052] 1、报文文件:时戳.dat,其对应的0索引文件为:时戳.idx0、时戳.idx1,时戳.idx1对应的日志文件为时戳.log。
[0053] 2、报文文件的清单文件为:manifest.dat,写入的内容为报文文件名,即:时戳.dat。
[0054] 3、日志文件的清单文件为:manifest.log,写入的内容为尚未成功构建1索引文件对应的日志文件名,如:时戳.log。若时戳.log对应的1索引文件时戳.idx1已成功构建,则需在manifest.log中去除时戳.log记录。
[0055] 以下时戳以201409182033234、201409182233234为例说明工作过程。
[0056] 黑匣子系统接收到首个网络通信报文时,黑匣子报文存储模块创建当前报文文件:201409182033234.dat,黑匣子报文索引模块创建当前0索引文件:201409182033234.idx0,当前1索引文件201409182033234.idx1及其日志为201409182033234.log。黑匣子报文索引模块将当前报文文件文件名201409182033234.dat写入报文文件的清单文件manifest.dat,将当前1索引文件的日志文件名201409182033234.log写入日志文件的清单文件manifest.log。后续依据报文文件的清单文件manifest.dat中的报文文件名,就可以访问黑匣子记录的所有报文文件,也可以按时间范围初步查询到报文所在的报文文件。后续依据日志文件的清单文件manifest.log中的报文文件名,可以访问到未构建完成的1索引文件对应的日志文件,依据日志文件可以重建其对应的1索引文件。
[0057] 黑匣子报文存储模块按报文到达时序将报文及其实时计算的报文加密校验值顺序写入到当前报文文件,即:201409182033234.dat,将当前报文时戳、报文文件偏移、报文长度、业务类型、源IP、目的IP、应用类型提交给黑匣子报文索引模块。黑匣子报文索引模块将报文时戳、报文文件偏移,报文长度顺序写入当前0索引文件201409182033234.idx0,产生报文文件中的报文序号seq_id;将报文序号seq_id、业务类型、源IP、目的IP、应用类型顺序写入当前日志文件201409182033234.log,同时使用MD-tree在内存中构建内存索引,达到内存阈值后,写入到当前1索引文件201409182033234.idx1。对于1索引文件的写入,若黑匣子系统内存大到足以存储当前报文文件的1索引文件的所有索引时,可以使用MD-tree构建内存索引,在更新报文文件时,一次性将内存索引写入到1索引文件中。
[0058] 黑匣子报文存储模块结束当前报文文件201409182233234.dat写入,创建下一个报文文件201409182233234.dat的依据是:可按照时间周期,也可按照报文数量或报文文件大小,也可以同时设置以上三个阈值,任意一个阈值达到,结束老报文文件的报文写入,创建新的报文文件201409182233234.dat。同时,索引模块创建0索引文件:201409182233234.idx0,1索引文件201409182233234.idx1及其日志为201409182233234.log。黑匣子报文索引模块将报文文件文件名201409182233234.dat写入报文文件的清单文件manifest.dat,将1索引文件的日志文件名201409182233234.log写入日志文件的清单文件manifest.log。对于本次报文,当前报文文件更新为201409182233234.dat,当前0索引文件为201409182233234.idx0,当前1索引文件为201409182233234.idx1及其日志为
201409182233234.log。
[0059] 对于老的日志文件201409182033234.log,索引模块将内存中的MD-tree内存索引写入到1索引文件201409182033234.idx1中,删除日志文件的清单文件manifest.log中的201409182033234.log记录。
[0060] 黑匣子在写入报文时,通常需要写入三个文件,即:报文文件,0索引文件和1索引文件的日志文件,间隙性地更新1索引文件。在更新存储报文文件时,还需要更新报文文件的清单文件manifest.dat,当前1索引文件和日志文件的清单文件manifest.log。黑匣子通常只有三个文件的频繁写入,三个文件的间隙性写入。在每秒写入报文个数很大时,若每个报文引起大量文件的写入,会由于硬盘随机写入导致IO性能大幅下降。以当前电力调度自动化系统为例,IEC60870-5-104的TCPIP报文,最小60字节,最大308字节。与前置机通信的远动,成百上千,以每秒4MB流量为例,报文数每秒多达13617–69905。本技术方案以尽量少的文件频繁写入能够有效利用硬盘存储IO写入性能,确保实时写入。
[0061] 电力调度自动化海量报文黑匣子的报文实时写入和实时多维索引构建,可以从黑匣子中按需查询获取报文,用于后续数据分析。
[0062] 使用电力调度自动化海量报文黑匣子定位故障时,黑匣子报文查询模块可以提供多维数据查询。以IEC60870-5-104为例:多维数据可以是业务、源IP、目的IP、应用类型、应用数据片段、时间范围的任意组合。
[0063] 查询报文时,若需查询当前索引,从MD-tree内存索引和1索引文件中查询报文,否则只需从1索引文件中查询。
[0064] 查询实例1:若只是时间范围查询,那么先访问报文文件的清单文件manifest.dat,确定起始时间对应的首个报文文件和结束时间对应的末尾报文文件,再访问首个报文文件的0索引文件,精确查找起始时间对应的首个报文的报文文件偏移、报文长度,从首个报文文件中依据报文文件偏移和报文长度获取报文内容,使用报文加密校验值对其校验,若校验通过,将该报文输出到结果报文缓存或结果报文文件;访问末尾报文文件的0索引文件,精确查找结束时间对应的末尾报文的报文文件偏移,报文长度,从末尾报文文件中依据报文文件偏移和报文长度获取报文内容,使用报文加密校验值对其校验,若校验通过,将该报文输出到结果报文缓存或结果报文文件。对首个报文和末尾报文之间的报文,只需要按序对报文文件中的文件校验其报文加密校验值,若校验通过,将该报文输出到结果报文缓存或结果报文文件。
[0065] 对于只是时间范围查询,只需要访问报文文件的清单文件manifest.dat一次,首个报文文件的0索引文件一次和末尾报文文件的0索引文件一次就可以通过以上两步查找获取所需的所有结果报文。
[0066] 查询实例2:如图5所示,按业务、源IP、目的IP、应用类型、应用数据片段、时间范围查询。先访问报文文件的清单文件manifest.dat,确定起始时间对应的首个报文文件和结束时间对应的末尾报文文件,再访问首个报文文件的1索引文件,依据业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中获取时戳符合时间范围的(报文文件偏移、报文长度)列表,依据(报文文件偏移、报文长度)列表中的报文文件偏移、报文长度从首个报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件。顺序访问首个报文文件和末尾报文文件之间的报文文件,访问报文文件的1索引文件,依据业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中(报文文件偏移、报文长度)列表,依据(报文文件偏移、报文长度)列表中的报文文件偏移、报文长度从报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件。最后访问末尾报文文件的1索引文件,依据业务、源IP、目的IP、应用类型,获取报文序号seq_id的列表,依据报文序号列表中的seq_id,从其对应的0索引文件中获取时戳符合时间范围的(报文文件偏移、报文长度)列表,依据(报文文件偏移、报文长度)列表中的报文文件偏移、报文长度从首个报文文件中获取报文内容,使用报文加密校验值对其校验,若校验通过,并使用快速单模匹配算法匹配应用数据片段,若匹配成功,将该报文输出到结果报文缓存或结果报文文件。
[0067] 对于复杂的多维数据报文查找,最坏的情形:需要访问报文文件的清单文件manifest.dat一次,访问首个报文文件一次、及其对应的0索引文件和1索引文件各一次。首个报文文件至末尾报文文件之间的顺序报文文件以及末尾报文文件的访问次数与首个报文文件一样。若首个报文文件、顺序报文文件和末尾报文文件的个数为n,那么访问文件的次数最多为3n+1,次数最少为n+1,表示访问n个1索引文件,没有获得所需的seq_id列表。
[0068] 对于结果报文,电力调度自动化海量报文黑匣子报文分析模块将报文应用数据根据业务协议规约作进一步解析。然后将解析结果提交给业务语义信息展示模块,直观的展示给用户。当然,用户也可以将结果报文导出备份。
[0069] 如图6所示,当电力自动化海量报文黑匣子出现异常掉电时,黑匣子索引恢复模块首先从log日志清单文件manifest.log中访问索引日志文件名,对于非当前1索引日志文件,读取日志文件中的内容重建该日志对应的1索引文件,构建成功后,将该日志文件名从manifest.log中清除。
[0070] 以上图4-6所示的一种用于电力调度自动化海量报文的黑匣子系统是本发明的具体实施例,已经体现出本发明突出的实质性特点和显著进步,可根据实际的使用需要,在本发明的启示下,对其结构等方面的等同修改,均在本方案的保护范围之列。
QQ群二维码
意见反馈