IEC 61850过程层网络冗余报文捕获分析工具开发
2014-06-09许茂林王娇张惠刚
许茂林,王娇,张惠刚
(1.德化县供电有限责任公司,福建泉州362500;2.南京工程学院电力学院,南京211167)
电力信息化
IEC 61850过程层网络冗余报文捕获分析工具开发
许茂林1,王娇2,张惠刚2
(1.德化县供电有限责任公司,福建泉州362500;2.南京工程学院电力学院,南京211167)
随着IEC 61850第二版的发布,以IEC 62439-3中高可用无缝环网为基础的网络冗余方案层出不穷,但缺乏相应的监测工具解析报文内容。基于Windows平台,采用Wireshark网络开发包,开发出高可用无缝环网(HSR)报文的捕捉、解析工具,并创新性地采用Winpcap库接口函数模拟装置发送报文,验证协议解析工具的可用性。结果表明,该解析工具能正确分析数据包的负载内容,对IEC 61850第二版的推广具有重要意义。
IEC 61850;高可用无缝环;Wireshark;协议解析
0 引言
IEC 61850标准是变电站自动化领域最为完善的通信标准,最大程度上实现了系统信息模型的统一、通信服务的统一和传输过程的统一,但并未对网络冗余、安全等重要应用领域做出明确的规定。随着第二版引入IEC 62439-3标准中的HSR(高可用性无缝环网)和PRP(并行冗余双网),为数字化变电站的通信可靠性、安全性提供了参考性的实现方案[1-3]。目前,大量基于该种协议的网络构架层出不穷,文献[4]提出了PRP的网络构架,将站控层网络和过程层网络均布置为星型双网。文献[5]根据HSR技术抵抗单点故障、实现无缝恢复的优势,设计了应用HSR的变电站三层通信网络结构。但是这些设计方案的可行性需要有强有力的监测工具来验证。本文以Wireshark开源代码为基础,以Visual Studio 2008开发平台为着眼点,利用C++语言编码,融合GTK界面设计工具,开发了捕获、解析HSR报文的插件。并通过Winpcap库模拟相关设备发包,以验证HSR报文插件的正确性。
1 高可用无缝环网
1.1 原理分析
1个简单的HSR网络是由多个双连接的交换节点串接而成的,每个交换节点都有2个端口,单播环形拓扑结构如图1所示。
图1中,灰色箭头为“A”类型数据帧;黑色箭头为“B”类型数据帧;虚线箭头为主机与环网相互通信不含HSR标签的数据帧。SAN(单连接节点)只有1个端口,不能直接连接到HSR环网中,需要使用冗余盒来搭桥;DANH(双连接节点)实现无缝环通信。
1个源端DANH从高层协议中发送1个数据帧(C帧),经过LRE(链路层冗余单元)时添加HSR标签,然后转发该帧到本节点的2个端口处,并配置相同MAC地址和序列号(即A帧和B帧)。在无故障的情况下,目的DANH在不同时间、不同方向接收2个结构相同的数据帧。对第一次接收到的数据帧,通过LRE移除帧中的HSR标签,并转发到高层协议中(D帧),第二次接收的相同帧认为是重复报文而丢弃。
1.2 报文结构
在第二版IEC 61850-9-2中,国际电工委员会第15工作组提出将IEC 62439-3中网络冗余配置方案添加到过程层网络中。其中,HSR标签映射到数据链路层,采用ISO/IEC 8802-3版本的以太网数据帧,具体格式如图2所示[6]。
ISO/IEC 8802-3数据帧中字段的含义如下:
(1)目的地址:目的地址长度为6个字节。根据规定,HSR目的地址的前5个字节固定为“01-15-4E-00-01”。
(2)标签协议标识符:8位,由802.1Q标准以太网编码帧来确定,一般设定为0X8100。
(3)标签控制信息:8位,主要涉及优先级和虚拟局域网。如果数据单元是SV或Goose报文,优先级为4,其他报文的优先级为1。
(4)HSR以太网类型:HSR报文的以太网类型由IEEE的著作权注册机构进行注册,一般是唯一的。HSR报文的以太网类型为0X892F。
(5)路径标识符:4位,由网络标识符和局域网标识符构成。其中局域网标识符占1位,确定冗余盒2个端口的接收情况(A=0,B=1)。
(6)帧大小:12位,前4位与路径标识符结合,计算长度是从路径标识符开始,一直到帧的数据单元结束。
(7)序列号:16位,用以标识重复帧。每次从高层发送1帧,序列号加1。
HSR标签就是由(4)—(7)构成的,由于HSR标签的加入,可能会超过IEEE 801.1D规定的数据最大长度1 522字节,因此需要网络内交换节点单元的内部结构支撑这种协议,目前该类装置研究处在起步阶段,开发测试报文的平台可以为装置研发提供强有力的支持。
2 HSR报文测试工具开发
2.1 开发平台介绍
Wireshark是一款强大的网络协议分析开源的跨平台软件[7],具有简洁友好的用户界面,其开源代码可以从Wireshark官网下载。由于软件底层和界面涉及许多Linux环境配置项,因此在Windows系统中编译Wireshark还需要以下软件来辅助:Visual Studio,Python和Cygwin,且采用C++语言为主要开发语言。
Wireshark源代码的基本结构逻辑上由5个部分组成,如图3所示。
(1)Winpcap库文件中NPF(数据包监听设备驱动程序)在操作系统核心内与网络接口驱动交互,调用用户级的Packet.dll和Wpacp.dll来实现报文的捕获,将捕获结果传递给Capture。
(2)Capture将捕获的数据储存在Wiretap。
(3)GTK1/2提供图形窗口工具,将用户的输入消息传递出去。
(4)Core综合协调用户传入、传出的消息。
(5)Epan接收来自Core的命令,指挥协议解析器,将结果传送到Core,最后调用GTK1/2库文件在界面上显示[9]。
2.2 开发测试流程
开发协议解析器主要目标是针对协议部分各字段的信息,以树形结构来划分各层,进行详细的展示。同时,通过过滤规则筛选显示到数据包列表的主窗口中[8]。将图2所示的协议分成4层:
(1)解析以太网层:前12个字节,包括目的MAC地址和源MAC地址,并判断是否有上层协议封装。
(2)解析虚拟局域网层:第12—14字节,分析数据优先级和虚拟局域网标识符等。
(3)解析HSR层:单独分裂出来,便于后面添加不同的数据报文,同时也有利于到达目的装置后丢弃HSR标签算法的统计。
(4)解析SV层或Goose层:最后的数据结构根据装置发出的类型分辨来解析。
2.3 HSR解析器的开发
本文主要开发HSR层解析器,下面介绍如何开发HSR解析器。
2.3.1 注册协议
设计的插件与外部实现交互,该任务需要特定的接口来承担,其中1个就是proto_register_ hsr接口,作用是注册解析器的协议信息。该函数包括协议的全名、简写和协议过滤字符串以及字段信息,对字段信息初始化也必不可少。static hf_register_info hf[]描述协议字段具体信息,包括路径标识符、局域网标识符、序列号等;设置HSR层报文详细列表树根节点static gint*ett[]= &ett_hsr_frame。
2.3.2 注册切换器
将解析器挂载到树形节点中,并形成与外界交互的端口。通过采用函数proto_reg_handoff_hsr()生成解析协议的句柄,关联上下层解析器,根据唯一标识识别协议类型。首先通过create_dissector_handle(dissect_hsr_frame,proto_hsr)查找到解析该帧的句柄,利用dissector_add_uint("ether type",ETHERTYPE_HSR,hsr_frame_handle)将句柄与协议类型关联;最后根据类型查找相应的解析器列表,准备开始解析。
2.3.3 实际解析处理
采用函数col_set_str(pinfo->cinfo,COL_PROTOCOL,"HSR")在数据列表中的纵向栏中设置需要显示的列表信息,然后创建协议树的详细信息,将HSR标签中的路径标识符、网络标识符和局域网通过proto_tree_add_item()函数添加到子协议树,比较给定报文与实际报文大小,如果两者相等,则继续将该节点添加到子协议树中,反之,在子协议树中添加判断的结果,并显示正确的数值。接着重复使用proto_tree_add_item()函数设置序列号、类型等。根据tvb_get_ntohs()获取下一层数据类型,如SV或Goose报文。开始调用解析下一层解析器。
2.4 开发结果验证
Winpcap网络开发包是一个免费、基于Windows平台下的工业标准工具,可以实现网络报文监听、抓捕、过滤、发送数据帧以及网络流量统计[10]。利用Winpcap发送数据帧模拟装置发包,利用已开发好的工具捕捉该类报文,可以验证工具的可行性。具体流程如图4所示:通过pcap_ findalldev()函数获取设备列表,根据列表显示的内容选择合适的网卡序列号;利用pcap_open_live()打开网卡,其中,因为工具使用的是主线程抓包,内部延迟参数设定要稍长些。按照报文格式设置主要数据后,利用pcap_sendpacket()发送出去,查看测试工具中是否有该类报文。编码分解结果如表1所示。
图4 发送报文流程
表1 编码分解结果
3 结语
本文根据IEC 61850最新发布的网络冗余方案预先设计出解析该类报文的插件,详细分析了该类报文产生机理和最新的IEEE 802-3报文格式(含有HSR标签),采用分层解决思路,简单概括解析报文的流程。通过在Visual Studio平台下搭建以Winpcap库文件为核心的项目,利用其设备驱动(NPF)和动态连接库(DLL)发送报文来验证测试工具设计的可行性,为未来设计相关类装置提供强有力的监测工具。
[1]谢志迅,邓素碧,臧德扬.数字化变电站通信网络冗余技术[J].电力自动化设备,2011,31(9)∶100-103.
[2]IEC 62439 SC 65C High availability automation networks [S].Geneva,Switzerland∶IEC,2008.
[3]IEC 61850 Communication network and systems in substations[S].Geneva,Switzerland∶IEC,2005.
[4]陈原子,徐习东.基于并行冗余网络的数字化变电站通信网络构架[J].电力自动化设备,2011,31(1)∶105-108.
[5]许铁峰,徐习东.高可用性无缝环网在数字化变电站通信网络的应用[J].电力自动化备,2011,31(10)∶121-125.
[6]IEC 61850 Communication network and systems in substations[S].Geneva,Switzerland∶IEC,2011.
[7]陈俊,阎慧,王宇.基于Wireshark的协议分析插件开发[C].第十六届全国青年通信学术会议集,2011.
[8]Wireshrk Developer’s Guide[EB/OL].http∶//www.wireshark.org/docs/wsdg_html_chunked/,2009.
[9]罗青林,徐克付,臧文羽,等.Wireshark环境下的网络协议解析与验证方法[J].计算机工程与设计,2011,32(3)∶770-775.
[10]范建忠,马千里.GOOSE通信与应用[J].电力系统及其自动化,2007,31(19)∶85-90.
(本文编辑:徐晗)
Development of Capture and Analytical Tool for Network Redundancy Packet on Process layer Based on IEC 61850
XU Maolin1,WANG Jiao2,ZHANG Huigang2
(1.Dehua Power Supply Co.,Ltd.,Quanzhou Fujian 362500,China;
2.Electric Power College,Nanjing Institute of Technology,Nanjing 211167,China)
With the publication of IEC 61850,version 2,the network redundancy schemes based on high availability seamless ring(HSR)in IEC 62439-3 emerge in endlessly.However,there are no corresponding monitoring tools for message analysis.Based on Windows platform and employing Wireshark network development kits,the tool for capturing and analyzing HSR packet is developed.Furthermore,the availability of the analysis tool is verified by innovatively adopting Winpcap interface function simulator for message sending. The result shows that the tool can correctly analyze the content in the data package,which is of great significance to popularization of the 2nd edition of IEC 61850.
IEC 61850;HSR;Wireshark;protocol analysis
TP311.56
:B
:1007-1881(2014)08-0046-04
2014-03-07
许茂林(1963-),男,福建泉州人,工程师,主要从事电力系统运行与控制工作。