許茂林,王嬌,張惠剛
(1.德化縣供電有限責任公司,福建泉州362500;2.南京工程學院電力學院,南京211167)
電力信息化
IEC 61850過程層網(wǎng)絡冗余報文捕獲分析工具開發(fā)
許茂林1,王嬌2,張惠剛2
(1.德化縣供電有限責任公司,福建泉州362500;2.南京工程學院電力學院,南京211167)
隨著IEC 61850第二版的發(fā)布,以IEC 62439-3中高可用無縫環(huán)網(wǎng)為基礎的網(wǎng)絡冗余方案層出不窮,但缺乏相應的監(jiān)測工具解析報文內容?;赪indows平臺,采用Wireshark網(wǎng)絡開發(fā)包,開發(fā)出高可用無縫環(huán)網(wǎng)(HSR)報文的捕捉、解析工具,并創(chuàng)新性地采用Winpcap庫接口函數(shù)模擬裝置發(fā)送報文,驗證協(xié)議解析工具的可用性。結果表明,該解析工具能正確分析數(shù)據(jù)包的負載內容,對IEC 61850第二版的推廣具有重要意義。
IEC 61850;高可用無縫環(huán);Wireshark;協(xié)議解析
IEC 61850標準是變電站自動化領域最為完善的通信標準,最大程度上實現(xiàn)了系統(tǒng)信息模型的統(tǒng)一、通信服務的統(tǒng)一和傳輸過程的統(tǒng)一,但并未對網(wǎng)絡冗余、安全等重要應用領域做出明確的規(guī)定。隨著第二版引入IEC 62439-3標準中的HSR(高可用性無縫環(huán)網(wǎng))和PRP(并行冗余雙網(wǎng)),為數(shù)字化變電站的通信可靠性、安全性提供了參考性的實現(xiàn)方案[1-3]。目前,大量基于該種協(xié)議的網(wǎng)絡構架層出不窮,文獻[4]提出了PRP的網(wǎng)絡構架,將站控層網(wǎng)絡和過程層網(wǎng)絡均布置為星型雙網(wǎng)。文獻[5]根據(jù)HSR技術抵抗單點故障、實現(xiàn)無縫恢復的優(yōu)勢,設計了應用HSR的變電站三層通信網(wǎng)絡結構。但是這些設計方案的可行性需要有強有力的監(jiān)測工具來驗證。本文以Wireshark開源代碼為基礎,以Visual Studio 2008開發(fā)平臺為著眼點,利用C++語言編碼,融合GTK界面設計工具,開發(fā)了捕獲、解析HSR報文的插件。并通過Winpcap庫模擬相關設備發(fā)包,以驗證HSR報文插件的正確性。
1.1 原理分析
1個簡單的HSR網(wǎng)絡是由多個雙連接的交換節(jié)點串接而成的,每個交換節(jié)點都有2個端口,單播環(huán)形拓撲結構如圖1所示。
圖1中,灰色箭頭為“A”類型數(shù)據(jù)幀;黑色箭頭為“B”類型數(shù)據(jù)幀;虛線箭頭為主機與環(huán)網(wǎng)相互通信不含HSR標簽的數(shù)據(jù)幀。SAN(單連接節(jié)點)只有1個端口,不能直接連接到HSR環(huán)網(wǎng)中,需要使用冗余盒來搭橋;DANH(雙連接節(jié)點)實現(xiàn)無縫環(huán)通信。
1個源端DANH從高層協(xié)議中發(fā)送1個數(shù)據(jù)幀(C幀),經過LRE(鏈路層冗余單元)時添加HSR標簽,然后轉發(fā)該幀到本節(jié)點的2個端口處,并配置相同MAC地址和序列號(即A幀和B幀)。在無故障的情況下,目的DANH在不同時間、不同方向接收2個結構相同的數(shù)據(jù)幀。對第一次接收到的數(shù)據(jù)幀,通過LRE移除幀中的HSR標簽,并轉發(fā)到高層協(xié)議中(D幀),第二次接收的相同幀認為是重復報文而丟棄。
1.2 報文結構
在第二版IEC 61850-9-2中,國際電工委員會第15工作組提出將IEC 62439-3中網(wǎng)絡冗余配置方案添加到過程層網(wǎng)絡中。其中,HSR標簽映射到數(shù)據(jù)鏈路層,采用ISO/IEC 8802-3版本的以太網(wǎng)數(shù)據(jù)幀,具體格式如圖2所示[6]。
ISO/IEC 8802-3數(shù)據(jù)幀中字段的含義如下:
(1)目的地址:目的地址長度為6個字節(jié)。根據(jù)規(guī)定,HSR目的地址的前5個字節(jié)固定為“01-15-4E-00-01”。
(2)標簽協(xié)議標識符:8位,由802.1Q標準以太網(wǎng)編碼幀來確定,一般設定為0X8100。
(3)標簽控制信息:8位,主要涉及優(yōu)先級和虛擬局域網(wǎng)。如果數(shù)據(jù)單元是SV或Goose報文,優(yōu)先級為4,其他報文的優(yōu)先級為1。
(4)HSR以太網(wǎng)類型:HSR報文的以太網(wǎng)類型由IEEE的著作權注冊機構進行注冊,一般是唯一的。HSR報文的以太網(wǎng)類型為0X892F。
(5)路徑標識符:4位,由網(wǎng)絡標識符和局域網(wǎng)標識符構成。其中局域網(wǎng)標識符占1位,確定冗余盒2個端口的接收情況(A=0,B=1)。
(6)幀大?。?2位,前4位與路徑標識符結合,計算長度是從路徑標識符開始,一直到幀的數(shù)據(jù)單元結束。
(7)序列號:16位,用以標識重復幀。每次從高層發(fā)送1幀,序列號加1。
HSR標簽就是由(4)—(7)構成的,由于HSR標簽的加入,可能會超過IEEE 801.1D規(guī)定的數(shù)據(jù)最大長度1 522字節(jié),因此需要網(wǎng)絡內交換節(jié)點單元的內部結構支撐這種協(xié)議,目前該類裝置研究處在起步階段,開發(fā)測試報文的平臺可以為裝置研發(fā)提供強有力的支持。
2.1 開發(fā)平臺介紹
Wireshark是一款強大的網(wǎng)絡協(xié)議分析開源的跨平臺軟件[7],具有簡潔友好的用戶界面,其開源代碼可以從Wireshark官網(wǎng)下載。由于軟件底層和界面涉及許多Linux環(huán)境配置項,因此在Windows系統(tǒng)中編譯Wireshark還需要以下軟件來輔助:Visual Studio,Python和Cygwin,且采用C++語言為主要開發(fā)語言。
Wireshark源代碼的基本結構邏輯上由5個部分組成,如圖3所示。
(1)Winpcap庫文件中NPF(數(shù)據(jù)包監(jiān)聽設備驅動程序)在操作系統(tǒng)核心內與網(wǎng)絡接口驅動交互,調用用戶級的Packet.dll和Wpacp.dll來實現(xiàn)報文的捕獲,將捕獲結果傳遞給Capture。
(2)Capture將捕獲的數(shù)據(jù)儲存在Wiretap。
(3)GTK1/2提供圖形窗口工具,將用戶的輸入消息傳遞出去。
(4)Core綜合協(xié)調用戶傳入、傳出的消息。
(5)Epan接收來自Core的命令,指揮協(xié)議解析器,將結果傳送到Core,最后調用GTK1/2庫文件在界面上顯示[9]。
2.2 開發(fā)測試流程
開發(fā)協(xié)議解析器主要目標是針對協(xié)議部分各字段的信息,以樹形結構來劃分各層,進行詳細的展示。同時,通過過濾規(guī)則篩選顯示到數(shù)據(jù)包列表的主窗口中[8]。將圖2所示的協(xié)議分成4層:
(1)解析以太網(wǎng)層:前12個字節(jié),包括目的MAC地址和源MAC地址,并判斷是否有上層協(xié)議封裝。
(2)解析虛擬局域網(wǎng)層:第12—14字節(jié),分析數(shù)據(jù)優(yōu)先級和虛擬局域網(wǎng)標識符等。
(3)解析HSR層:單獨分裂出來,便于后面添加不同的數(shù)據(jù)報文,同時也有利于到達目的裝置后丟棄HSR標簽算法的統(tǒng)計。
(4)解析SV層或Goose層:最后的數(shù)據(jù)結構根據(jù)裝置發(fā)出的類型分辨來解析。
2.3 HSR解析器的開發(fā)
本文主要開發(fā)HSR層解析器,下面介紹如何開發(fā)HSR解析器。
2.3.1 注冊協(xié)議
設計的插件與外部實現(xiàn)交互,該任務需要特定的接口來承擔,其中1個就是proto_register_ hsr接口,作用是注冊解析器的協(xié)議信息。該函數(shù)包括協(xié)議的全名、簡寫和協(xié)議過濾字符串以及字段信息,對字段信息初始化也必不可少。static hf_register_info hf[]描述協(xié)議字段具體信息,包括路徑標識符、局域網(wǎng)標識符、序列號等;設置HSR層報文詳細列表樹根節(jié)點static gint*ett[]= &ett_hsr_frame。
2.3.2 注冊切換器
將解析器掛載到樹形節(jié)點中,并形成與外界交互的端口。通過采用函數(shù)proto_reg_handoff_hsr()生成解析協(xié)議的句柄,關聯(lián)上下層解析器,根據(jù)唯一標識識別協(xié)議類型。首先通過create_dissector_handle(dissect_hsr_frame,proto_hsr)查找到解析該幀的句柄,利用dissector_add_uint("ether type",ETHERTYPE_HSR,hsr_frame_handle)將句柄與協(xié)議類型關聯(lián);最后根據(jù)類型查找相應的解析器列表,準備開始解析。
2.3.3 實際解析處理
采用函數(shù)col_set_str(pinfo->cinfo,COL_PROTOCOL,"HSR")在數(shù)據(jù)列表中的縱向欄中設置需要顯示的列表信息,然后創(chuàng)建協(xié)議樹的詳細信息,將HSR標簽中的路徑標識符、網(wǎng)絡標識符和局域網(wǎng)通過proto_tree_add_item()函數(shù)添加到子協(xié)議樹,比較給定報文與實際報文大小,如果兩者相等,則繼續(xù)將該節(jié)點添加到子協(xié)議樹中,反之,在子協(xié)議樹中添加判斷的結果,并顯示正確的數(shù)值。接著重復使用proto_tree_add_item()函數(shù)設置序列號、類型等。根據(jù)tvb_get_ntohs()獲取下一層數(shù)據(jù)類型,如SV或Goose報文。開始調用解析下一層解析器。
2.4 開發(fā)結果驗證
Winpcap網(wǎng)絡開發(fā)包是一個免費、基于Windows平臺下的工業(yè)標準工具,可以實現(xiàn)網(wǎng)絡報文監(jiān)聽、抓捕、過濾、發(fā)送數(shù)據(jù)幀以及網(wǎng)絡流量統(tǒng)計[10]。利用Winpcap發(fā)送數(shù)據(jù)幀模擬裝置發(fā)包,利用已開發(fā)好的工具捕捉該類報文,可以驗證工具的可行性。具體流程如圖4所示:通過pcap_ findalldev()函數(shù)獲取設備列表,根據(jù)列表顯示的內容選擇合適的網(wǎng)卡序列號;利用pcap_open_live()打開網(wǎng)卡,其中,因為工具使用的是主線程抓包,內部延遲參數(shù)設定要稍長些。按照報文格式設置主要數(shù)據(jù)后,利用pcap_sendpacket()發(fā)送出去,查看測試工具中是否有該類報文。編碼分解結果如表1所示。
圖4 發(fā)送報文流程
表1 編碼分解結果
本文根據(jù)IEC 61850最新發(fā)布的網(wǎng)絡冗余方案預先設計出解析該類報文的插件,詳細分析了該類報文產生機理和最新的IEEE 802-3報文格式(含有HSR標簽),采用分層解決思路,簡單概括解析報文的流程。通過在Visual Studio平臺下搭建以Winpcap庫文件為核心的項目,利用其設備驅動(NPF)和動態(tài)連接庫(DLL)發(fā)送報文來驗證測試工具設計的可行性,為未來設計相關類裝置提供強有力的監(jiān)測工具。
[1]謝志迅,鄧素碧,臧德?lián)P.數(shù)字化變電站通信網(wǎng)絡冗余技術[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]陳原子,徐習東.基于并行冗余網(wǎng)絡的數(shù)字化變電站通信網(wǎng)絡構架[J].電力自動化設備,2011,31(1)∶105-108.
[5]許鐵峰,徐習東.高可用性無縫環(huán)網(wǎng)在數(shù)字化變電站通信網(wǎng)絡的應用[J].電力自動化備,2011,31(10)∶121-125.
[6]IEC 61850 Communication network and systems in substations[S].Geneva,Switzerland∶IEC,2011.
[7]陳俊,閻慧,王宇.基于Wireshark的協(xié)議分析插件開發(fā)[C].第十六屆全國青年通信學術會議集,2011.
[8]Wireshrk Developer’s Guide[EB/OL].http∶//www.wireshark.org/docs/wsdg_html_chunked/,2009.
[9]羅青林,徐克付,臧文羽,等.Wireshark環(huán)境下的網(wǎng)絡協(xié)議解析與驗證方法[J].計算機工程與設計,2011,32(3)∶770-775.
[10]范建忠,馬千里.GOOSE通信與應用[J].電力系統(tǒng)及其自動化,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-),男,福建泉州人,工程師,主要從事電力系統(tǒng)運行與控制工作。