高 婷,段 曉
(中國原子能科學研究院 核工程設計研究所,北京 102413)
隨著信息技術的日益成熟,數(shù)字化儀控系統(tǒng)逐漸應用于核電領域。目前國際上部分采用數(shù)字化儀控系統(tǒng)的核電廠已運行多年,在建的核電機組中,其儀控系統(tǒng)已大都采用數(shù)字化儀控系統(tǒng),如中國田灣核電1、2號機組、中國嶺澳二期1號機組等核電站。儀控系統(tǒng)數(shù)字化的引入體現(xiàn)了數(shù)字化的優(yōu)勢,也帶來了新的安全問題。2008年3月,美國喬治亞州的1座核電站因某臺電腦上的軟件更新而被迫緊急停機長達48h;2010年,針對伊朗布什爾核電廠的“震網(wǎng)”病毒也為核電設施的安全敲響了警鐘。以上事例證明,核電工業(yè)控制系統(tǒng)中存在的安全脆弱性為工廠財產(chǎn)、人員和環(huán)境安全帶來危險[1],核電工業(yè)控制系統(tǒng)的安全問題日益突出。
在運行維護方面,也同樣存在新的問題。目前,各電站主要是依靠運行操作員通過操作員站的報警來發(fā)現(xiàn)網(wǎng)絡故障,再通知維修人員處理,對故障沒有預判的過程,沒有預先掌握問題隱患,屬于事后處理的糾正性維修[2]。對于網(wǎng)絡結構較為復雜的核電工控網(wǎng)絡來說,故障原因難以查找和定位。隨著設備的老化,運行和維護人員的工作量會越來越繁重。
由于核電廠的特殊性,對核電廠DCS系統(tǒng)網(wǎng)絡的安全性、可靠性、實時性、可用性有較高要求,迫切需要一套簡單高效、安全可靠的網(wǎng)絡管理工具。
軟件自定義網(wǎng)絡(SDN:Software Defined Network)是由美國斯坦福大學clean slate課題組提出的一種新型網(wǎng)絡架構。其設計理念是將網(wǎng)絡的控制平面與數(shù)據(jù)平面分離開來,通過集中控制器中的軟件編程平臺,定義和控制網(wǎng)絡,從而實現(xiàn)網(wǎng)絡資源的靈活調(diào)配,為核心網(wǎng)絡及應用的創(chuàng)新提供了良好的平臺[3,4]。SDN將傳統(tǒng)網(wǎng)絡中的決策權和執(zhí)行權分離,控制平面負責對不同業(yè)務特性進行適配,做出網(wǎng)絡轉發(fā)行為的決策。數(shù)據(jù)平面只負責單純的數(shù)據(jù)轉發(fā)。數(shù)據(jù)平面根據(jù)控制平面下發(fā)的流表規(guī)則進行已知網(wǎng)絡流的轉發(fā),而對于未知的網(wǎng)絡流,則需要詢問控制平面??刂破矫娓鶕?jù)全局網(wǎng)絡的拓撲和帶寬等信息,計算最佳的轉發(fā)路徑,對數(shù)據(jù)平面的請求作出應答,下發(fā)流表規(guī)則,將其安裝到數(shù)據(jù)平面的設備中去??刂破矫嫱ǔS梢慌_或多臺控制器組成[5],所有的控制邏輯都以軟編碼的形式實現(xiàn),還可以在控制層之上通過特定的接口來開發(fā)自己的應用程序對數(shù)據(jù)平面的設備進行管理,增加了網(wǎng)絡配置的靈活性和可定制性,方便了控制平面的升級換代,加快了新業(yè)務引入的速度。數(shù)據(jù)平面由成百上千個支持SDN相關協(xié)議(OpenFlow協(xié)議)的交換機組成,根據(jù)控制器下發(fā)的流表項進行規(guī)制匹配和轉發(fā)。通過SDN提供的軟件接口,網(wǎng)絡管理員對網(wǎng)絡流量具有完全的控制權,可以對網(wǎng)絡進行自動化地部署和運維故障診斷,省去了數(shù)量龐大的網(wǎng)絡轉發(fā)設備的配置管理,降低了出錯率和網(wǎng)絡運行成本。
OpenFlow協(xié)議是目前SDN事實上的通信協(xié)議,用來描述控制器和交換機之間交互的所有信息的標準,以及控制器和交換機之間的標準接口。用戶通過定義好的API在控制器上編寫自己的控制策略,控制器會根據(jù)這些策略對OpenFlow交換機上的流表進行管理,從而實現(xiàn)用戶所預期的網(wǎng)絡功能。OpenFlow 1.0協(xié)議是最先公開化的、較為全面的草擬標準,在此標準基礎上,學術界得以深入研究SDN網(wǎng)絡的運行機制,業(yè)界可以實現(xiàn)相關的試驗產(chǎn)品。此協(xié)議可以滿足網(wǎng)絡流量轉發(fā)的大部分功能。
SDN是目前國內(nèi)外研究的一個重點課題,在國際頂級學術研究會議SIGCOMM中有專門的HotSDN子會議議題。從SDN的控制平面到數(shù)據(jù)平面都有很多相關的研究,如全局流量優(yōu)化的問題[6,7]、控制器安全問題[8]、控制器性能測試[9-11]等。在國內(nèi)SDN研究領域,清華大學在控制平面的域內(nèi)流量識別、域間擴展性以及相關虛擬技術等方面進行了相關研究[12]。西安交通大學開發(fā)了自己的SDN/OpenFlow交換機,在交換機優(yōu)化等方面進行了相關研究工作。國際上,斯坦福大學參與SDN相關標準的制定和更新,還維護了一些SDN/OpenFlow實驗的開源程序,如網(wǎng)絡仿真平臺Mininet[13]、軟定義網(wǎng)絡控制器NOX[14]和POX[15]等。
在圖1所示的SDN架構中,最頂層的是應用層,主要包含各種業(yè)務應用;中間是控制層,負責對整個網(wǎng)絡的資源進行管理和控制;最下面是基礎設備層,負責進行數(shù)據(jù)的轉發(fā)。其中,應用層和控制層屬于控制平面,基礎設備層屬于數(shù)據(jù)平面,兩個平面之間通過OpenFlow協(xié)議進行交互。
圖1 SDN網(wǎng)絡架構Fig.1 SDN Network architecture
數(shù)據(jù)平面進行網(wǎng)絡流量的轉發(fā),與傳統(tǒng)網(wǎng)絡不同的是,數(shù)據(jù)平面不具備決策功能,如傳統(tǒng)網(wǎng)絡中的交換機能夠路由選路、集線器會自動廣播轉發(fā)。數(shù)據(jù)平面則是將決策權交給控制器,自身只按照規(guī)則對符合規(guī)則的數(shù)據(jù)包進行轉發(fā)??刂破矫鎰t是對各種網(wǎng)絡流量的去向進行決策,所有未識別的流量都會被數(shù)據(jù)平面反饋給控制平面??刂破矫娓鶕?jù)上層業(yè)務應用的配置,結合全局的拓撲信息,對這些流量進行算路。本質上,控制器是一個網(wǎng)絡控制功能模塊的載體,網(wǎng)絡管理人員可以根據(jù)自己的需要編寫或者搭載具有相應網(wǎng)絡功能的模塊,進而完成網(wǎng)絡的控制。OpenFlow協(xié)議是兩個平面之間的橋梁,定義了控制器和交換機之間的通信接口。
1)SDN數(shù)據(jù)平面
SDN的數(shù)據(jù)平面指由SDN網(wǎng)絡底層基礎設備組成的網(wǎng)絡。目前,SDN使用OpenFlow作為通信協(xié)議。所以,SDN的網(wǎng)絡設備就是指能夠支持OpenFlow的網(wǎng)絡轉發(fā)設備。雖然業(yè)界仍舊將這些網(wǎng)絡設備稱之為switch,即交換機,但這種設備已與傳統(tǒng)網(wǎng)絡中的交換機不再相同。在SDN體系里,數(shù)據(jù)平面表現(xiàn)出的功能可以是集線器那樣的廣播,也可以是交換機隔離沖突域的高級轉發(fā)。
SDN數(shù)據(jù)平面的網(wǎng)絡設備中包含一個流表。流表中包含不同的流表項用來匹配不同的網(wǎng)絡流量,所有的流表項及其對應的轉發(fā)動作都是由控制器進行決策后,通過OpenFlow協(xié)議下發(fā)到交換機上的。數(shù)據(jù)平面的轉發(fā)設備在收到網(wǎng)絡數(shù)據(jù)包后,首先匹配流表項,如果能匹配到規(guī)則,則按照規(guī)則中的動作進行操作。如果不匹配,則將數(shù)據(jù)包的包頭或整個數(shù)據(jù)包轉發(fā)給控制器,控制器再根據(jù)其上的業(yè)務應用等邏輯生成對這條流的控制流表項,下發(fā)到數(shù)據(jù)平面中。數(shù)據(jù)平面的網(wǎng)絡設備在安裝好流表規(guī)則后,則按照規(guī)則中的動作對該條流進行處理。
2)SDN控制平面
控制平面由控制器組成。控制器通過OpenFlow協(xié)議對整個網(wǎng)絡數(shù)據(jù)平面中的設備進行集中式地控制。控制器擁有網(wǎng)絡的全局信息,所以在路由決策、流量工程等方面具有極大的優(yōu)勢。目前,較為成熟的控制器有Nox、Pox、Floodlight[16]、Beacon等。
控制平面向上層應用提供統(tǒng)一的接口,上層管理人員可以根據(jù)自己的需求定制自己的網(wǎng)絡應用程序來管理網(wǎng)絡。這不僅為新型網(wǎng)絡的科研實驗帶來了極大的方便,也對實際網(wǎng)絡的部署升級帶來極大的便利。
SDN本質上是構建了一個網(wǎng)絡操作系統(tǒng),管理人員可以在其上構建各種各樣的網(wǎng)絡應用。這與計算機虛擬機的發(fā)展趨勢類似,使計算機世界和網(wǎng)絡世界都可以通過軟件編程的方式靈活控制。同時,有了SDN,計算機網(wǎng)絡的研究與發(fā)展將不再受傳統(tǒng)設備廠商的束縛。通過簡單的編程就可以實現(xiàn)整個網(wǎng)絡的控制和檢驗,大大提高網(wǎng)絡的發(fā)展速度。在SDN的推動下,傳統(tǒng)的設備生產(chǎn)廠商面臨新網(wǎng)絡市場的挑戰(zhàn),新興SDN技術公司對傳統(tǒng)網(wǎng)絡形成了巨大挑戰(zhàn)。網(wǎng)絡廠商的競爭會加快網(wǎng)絡市場技術的演進,最終受益的將是整個社會。
相對傳統(tǒng)網(wǎng)絡,SDN架構可以解決傳統(tǒng)網(wǎng)絡中結構固化、路由效率低、設備手動管理與配置復雜等問題。在核電廠監(jiān)控系統(tǒng)網(wǎng)絡在應用SDN后,可以隨時對網(wǎng)絡狀態(tài)、網(wǎng)絡性能、網(wǎng)絡安全進行監(jiān)測和管理。
結合當前主流的分布式控制系統(tǒng)架構,基于SDN的核電工控系統(tǒng)分為現(xiàn)場設備層、現(xiàn)場控制層、操作和管理層、數(shù)據(jù)轉發(fā)層、數(shù)據(jù)控制層和邏輯應用層。
1)現(xiàn)場設備層由工藝系統(tǒng)的各種設備組成。其包括測量設備(傳感器、變送器等)和驅動器接口設備(驅動器、開關柜、電源設備等)。
2)現(xiàn)場控制層由現(xiàn)場控制級設備組成。其包括各子控制系統(tǒng)的現(xiàn)場I/O控制站,負責反應堆監(jiān)控系統(tǒng)的信號調(diào)制和處理的設備。
3)操作和管理信息層。其包括可以使人員能夠操作反應堆,能夠監(jiān)測反應堆狀態(tài)并對反應堆儀控系統(tǒng)實施運行服務的常規(guī)設備和計算機設備,如操作員站、工程師站等設備。
4)數(shù)據(jù)轉發(fā)層由SDN交換器組成,負責現(xiàn)場控制層、操作和管理信息層的通信數(shù)據(jù)進行轉發(fā),SDN交換器根據(jù)控制器下發(fā)的流表進行數(shù)據(jù)轉發(fā)。
5)數(shù)據(jù)控制層由SDN控制器組成,在控制層之上通過北向接口API來開發(fā)自定義的應用程序,通過Open Flow協(xié)議實現(xiàn)對轉發(fā)層設備的管理。
6)邏輯應用層,包括各種不同的業(yè)務和應用,如入侵檢測模塊、網(wǎng)絡性能監(jiān)測模塊、網(wǎng)絡狀態(tài)監(jiān)測模塊、網(wǎng)絡安全防護模塊等。當網(wǎng)絡運行出現(xiàn)異常時,網(wǎng)絡安全防護模塊通過北向API向控制器下發(fā)指令,實現(xiàn)相應的安全功能。
基于軟件自定義網(wǎng)絡的核電廠監(jiān)控系統(tǒng)可以簡單地實現(xiàn)以下功能:
1)基于SDN的網(wǎng)絡狀態(tài)監(jiān)測、網(wǎng)絡性能監(jiān)測與管理
SDN控制器主要通過LLDP(鏈路層發(fā)現(xiàn)協(xié)議)進行全局拓撲發(fā)現(xiàn)??刂破鬟M行鏈路發(fā)現(xiàn)過程時,首先會通過一個Packet_out消息發(fā)送LLDP數(shù)據(jù)包給與之相連的所有交換機。一旦交換機收到Packet_out消息,就會把LLDP數(shù)據(jù)包通過其所有的端口發(fā)送給其他與之連接的設備。收到LLDP數(shù)據(jù)包的交換機執(zhí)行流表查找操作,若在流表中沒有匹配項,則發(fā)送Packet-in消息給控制器??刂破魇盏絇acket_In消息后,對數(shù)據(jù)包進行分析并在其保存的鏈路發(fā)現(xiàn)表中創(chuàng)建兩臺交換機之間的鏈接記錄,最終控制器創(chuàng)建完備的網(wǎng)絡拓撲視圖??刂破鞫ㄆ诎l(fā)送包含LLDP數(shù)據(jù)包的Packet_In。所以,SDN天然具備拓撲管理功能,可以隨時監(jiān)控和采集SDN交換機信息,及時反饋網(wǎng)絡的設備工作狀態(tài)和鏈路連接狀態(tài)。由于核電工控系統(tǒng)網(wǎng)絡結構相對固定,若鏈路連接狀態(tài)發(fā)生變化,則意味著網(wǎng)絡故障可能已經(jīng)發(fā)生。運行維護人員可快速定位故障點,及時對網(wǎng)絡故障進行維修檢測。
同時,控制器可以根據(jù)不同交換機返回的Packet_In報文的時間差,計算出鏈路時延,從而對網(wǎng)絡狀態(tài)進行實時監(jiān)測,例如網(wǎng)絡的連通性及各種網(wǎng)絡設備的狀態(tài)。
帶寬數(shù)據(jù)是網(wǎng)絡狀態(tài)中的重要數(shù)據(jù)。在SDN網(wǎng)絡中,可以通過Open Flow協(xié)議獲取帶寬數(shù)據(jù)。Open Flow協(xié)議中可以通過統(tǒng)計報文來獲取端口、流表、流表項、組表和meter表的統(tǒng)計信息。以端口的統(tǒng)計信息為例,控制器通過周期下發(fā)Port statistics消息,可以獲得交換機端口的統(tǒng)計信息。該統(tǒng)計信息中包括:收發(fā)的包數(shù)、字節(jié)數(shù)以及這個統(tǒng)計持續(xù)的時間。用端口最大帶寬減去當前帶寬,即可得到剩余帶寬;同理,可以計算出對應流表項或者組表等的統(tǒng)計流量?;谝陨蠑?shù)據(jù),可以在SDN控制器上部署各種用戶自定義的負載均衡、流量控制等策略。對于DCS網(wǎng)絡中可能出現(xiàn)的網(wǎng)絡風暴問題,也可以在SDN控制器中,設計基于SDN多路徑負載均衡策略,優(yōu)化整個網(wǎng)絡的傳輸速率,提高核電工控系統(tǒng)網(wǎng)絡利用率。
在SDN中進行網(wǎng)絡管理,無需對底層的多個硬件設備進行反復配置與調(diào)試,只需要在SDN控制平臺上編輯自定義的配置策略。SDN控制器會下發(fā)相應的策略,網(wǎng)絡中的交換機等設備會自動更新流表。對于在較復雜網(wǎng)絡環(huán)境下運行的核電工控系統(tǒng)DCS來說,極大地簡化了運維人員的工作量。
所以,通過SDN在核電工控系統(tǒng)網(wǎng)絡中的應用,維修人員可以迅速得知網(wǎng)絡中的鏈路故障及故障節(jié)點;獲取網(wǎng)絡設備端口工作狀態(tài),對網(wǎng)絡中鏈路的帶寬、流量、網(wǎng)絡時延等進行實時監(jiān)測;通過對DCS網(wǎng)絡狀態(tài)的實時監(jiān)測,在網(wǎng)絡運行出現(xiàn)異常前給出警報或提示,做到預防性維護;對DCS網(wǎng)絡進行全面監(jiān)測,實現(xiàn)對DCS網(wǎng)絡的統(tǒng)一管理。
2)基于SDN的網(wǎng)絡故障診斷和自動恢復
基于SDN,可對核電工控系統(tǒng)的網(wǎng)絡性能進行分析和診斷。在檢測到鏈路故障后,SDN控制器可根據(jù)全局拓撲,按照網(wǎng)絡管理員配置的路由選擇算法,自動更新最優(yōu)路徑,并將流表下發(fā)到底層數(shù)據(jù)交換機中,迅速完成鏈路故障的恢復。通過SDN在核電工控系統(tǒng)網(wǎng)絡中的應用,可以降低設備的平均故障修復時間,節(jié)約人力成本,減少損失。
3)基于SDN的網(wǎng)絡安全監(jiān)測和管理
在傳統(tǒng)網(wǎng)絡中,防火墻、入侵檢測系統(tǒng)等網(wǎng)絡安全工具需配置在網(wǎng)絡中特定的硬件設備中,需對多個硬件設備進行反復配置與調(diào)試以滿足要求。而在SDN網(wǎng)絡中,上述功能均可在SDN控制器中以軟件程序的方式進行配置。通過調(diào)用SDN控制器的北向接口,獲得網(wǎng)絡性能等數(shù)據(jù),并對其進行分析和判斷,最后通過控制器下發(fā)流表來完成網(wǎng)絡配置。例如,當基于SDN的入侵檢測應用,檢測到惡意攻擊時,可以自動下發(fā)相應的流表,將惡意攻擊的數(shù)據(jù)包導向網(wǎng)絡中的安全隔離設備,避免對核電工控系統(tǒng)DCS造成影響。
與傳統(tǒng)網(wǎng)絡相比,基于SDN的核電工控系統(tǒng)在帶來益處的同時,也帶來新的安全風險。SDN控制器對全部網(wǎng)絡資源進行統(tǒng)一管控,使得網(wǎng)絡配置、安全服務部署等都集中在控制器上,控制器的性能問題可能成為全網(wǎng)的制約。SDN北向接口的開放性,也會引入SDN在安全方面的薄弱性。由于核電安全的特殊性,在SDN的應用過程中,需針對以上問題加強SDN的安全防護,設計針對核電工控系統(tǒng)的定制化入侵檢測算法,定期檢測程序漏洞及惡意代碼,采用完備的授權驗證機制,確??刂破靼踩?/p>
綜上所述,在核電工控系統(tǒng)應用軟件自定義網(wǎng)絡技術可協(xié)助運行維護人員對網(wǎng)絡狀態(tài)、網(wǎng)絡性能進行集中監(jiān)測;對網(wǎng)絡故障進行自診斷和恢復;對網(wǎng)絡安全進行監(jiān)測和管理等。本文提出了在核電工控系統(tǒng)應用軟件自定義網(wǎng)絡技術的框架,為解決核電工控系統(tǒng)的網(wǎng)絡故障、流量控制、故障診斷、安全防護等問題提供了新的思路,期望能對核電工控系統(tǒng)的網(wǎng)絡管理方式提供一定的參考作用。