紀(jì) 元,鄭衛(wèi)波,王 梓
(1.南瑞集團有限公司(國網(wǎng)電力科學(xué)研究院有限公司),江蘇 南京 210003;2.南京南瑞信息通信科技有限公司,江蘇 南京 210003)
隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,5G、電力物聯(lián)網(wǎng)建設(shè)的推進,電力物聯(lián)網(wǎng)終端設(shè)備呈現(xiàn)規(guī)模龐大、結(jié)構(gòu)復(fù)雜、種類多樣等發(fā)展趨勢,電力信息網(wǎng)絡(luò)邊界安全接入面臨諸多新問題。一是隨著業(yè)務(wù)使用量的指數(shù)級增長,幾十萬乃至幾百萬級別的電力物聯(lián)網(wǎng)感知層終端安全、可信實時接入電力信息網(wǎng)絡(luò),對于電力信息網(wǎng)絡(luò)邊界安全接入設(shè)備的接入能力要求越來越高,需要不斷對安全接入設(shè)備的集群進行擴容和升級,運維成本逐日提升。二是隨著業(yè)務(wù)終端類型不斷增加,終端接入時采用的安全交互認(rèn)證協(xié)議種類也隨之增加,需要根據(jù)不同安全協(xié)議、算法定制多樣化的硬件資源,原有不同款型的專用邊界安全接入設(shè)備已無法適應(yīng)電力物聯(lián)網(wǎng)業(yè)務(wù)的動態(tài)變化,導(dǎo)致業(yè)務(wù)接入時資源分配不均勻、部分業(yè)務(wù)接入時資源緊缺或閑置、有限的物理資源缺少有效與合理的分配。
現(xiàn)有電力系統(tǒng)中信息網(wǎng)絡(luò)、互聯(lián)網(wǎng)邊界包含移動接入、視頻接入、采集接入、配電接入、變電站接入等多類安全接入類設(shè)備,存在設(shè)備型號眾多、硬件資源分配不均衡、業(yè)務(wù)接入靈活性差、運維工作復(fù)雜等問題,無法支撐電力物聯(lián)網(wǎng)持續(xù)增長的海量異構(gòu)物聯(lián)網(wǎng)終端便捷接入的需求。
電力物聯(lián)網(wǎng)接入業(yè)務(wù)主要包括移動類、采集類、視頻類、車聯(lián)網(wǎng)、輸電線路狀態(tài)監(jiān)測、配電自動化、變電站智能巡檢等,每種業(yè)務(wù)分別采用不同的專用的邊界安全設(shè)備接入信息內(nèi)網(wǎng),邊界安全設(shè)備之間相互不兼容,造成用戶選擇困難、業(yè)務(wù)接入復(fù)雜等問題,不利于電力物聯(lián)網(wǎng)終端的融合接入。同時,各類型邊界安全設(shè)備通過持續(xù)擴展增加硬件數(shù)量以滿足不斷增加的終端訪問量,使得業(yè)務(wù)接入的擴展性較差,各類業(yè)務(wù)的邊界安全接入設(shè)備越積越多。
傳統(tǒng)的邊界安全設(shè)備多采用VPN實現(xiàn),通?;贚inux多線程I/O模型,操作系統(tǒng)內(nèi)核需要負責(zé)線程間頻繁的上下文切換,依靠操作系統(tǒng)調(diào)度系統(tǒng)來服務(wù)網(wǎng)絡(luò)包的調(diào)度,在網(wǎng)絡(luò)負載很大的場景下只會造成CPU核滿轉(zhuǎn)且不斷相互切換產(chǎn)生瓶頸,在高速網(wǎng)絡(luò)環(huán)境下面臨著丟包率高、延時長、系統(tǒng)負載重等問題,無法滿足高速網(wǎng)絡(luò)環(huán)境下的安全連接實時處理的需求。
經(jīng)過調(diào)研,目前國內(nèi)外流行的虛擬化技術(shù)路線是利用Intel VT硬件輔助虛擬化、KVM、QEMU等技術(shù)。例如,文獻[1-2]將設(shè)備硬件物理資源虛擬成多個VM虛擬機,不同VM虛擬機內(nèi)運行各類不同的安全接入設(shè)備的原有內(nèi)核和應(yīng)用進程,該技術(shù)能夠解決一定硬件資源分配不均問題。但與輕量化的容器相比較,虛擬機占用系統(tǒng)資源較重,硬件資源僅能被劃分為有限數(shù)量的VM虛擬機。另外,VM虛擬機采用多級網(wǎng)橋與外部網(wǎng)絡(luò)通訊,并沒有解決操作系統(tǒng)和協(xié)議棧性能瓶頸問題。因此,本文提出一種更高效虛擬化模型。
本文提出一種基于容器的安全接入虛擬化模型,如圖1所示。該模型總體采用基于可編排容器[3]化的安全接入服務(wù)集群,整合多種不同類型的邊界安全接入設(shè)備,采用SR-IOV技術(shù)將PCIE密碼單元、網(wǎng)卡等物理資源虛擬化,形成統(tǒng)一的一套硬件資源集群,即圖1的最底層;將安全接入能力服務(wù)化,實現(xiàn)業(yè)務(wù)終端的統(tǒng)一安全接入認(rèn)證,滿足不同業(yè)務(wù)場景下的動態(tài)可擴展訪問。在虛擬化平臺層面采用成熟容器集群管理框架實現(xiàn)容器自動化部署、資源調(diào)度、擴容縮容、運行監(jiān)控[4];在安全接入服務(wù)層面對邊界安全接入設(shè)備的安全功能進行封裝,實現(xiàn)不同安全功能的計算插件節(jié)點化,并通過服務(wù)方式提供外部調(diào)用。與傳統(tǒng)虛擬化模型相比,該模型將數(shù)據(jù)平面與控制平面相互分開,實現(xiàn)對業(yè)務(wù)訪問與集群管理在整個收發(fā)處理路徑上完全的并行化。
圖1 基于容器的安全接入虛擬化模型
該模型具備多種認(rèn)證機制,支持多類異構(gòu)泛終端的高并發(fā)、高可用接入,集群支持彈性伸縮、平滑升級、可擴展性強等特點,同時具備完善的安全監(jiān)測預(yù)警處置功能,滿足用戶智能運維的實際需求。
本文主要研究基于DPDK高速數(shù)據(jù)包處理框架的虛擬交換機[5]、容器網(wǎng)絡(luò)接口插件、負載均衡器,基于用戶自定義資源的高性能容器網(wǎng)絡(luò)、集群服務(wù)資源動態(tài)伸縮、服務(wù)計算節(jié)點靈活編排等關(guān)鍵技術(shù),構(gòu)建完整的數(shù)據(jù)虛擬化轉(zhuǎn)發(fā)平面、容器網(wǎng)絡(luò)和安全接入服務(wù),實現(xiàn)高速、可靠、擴展性強、靈活智能的邊界安全接入服務(wù)虛擬化技術(shù)。
本文基于軟件定義網(wǎng)絡(luò)的思想,將安全接入集群網(wǎng)絡(luò)劃分為數(shù)據(jù)平面和控制平面[6],提出業(yè)務(wù)與控制相分離的網(wǎng)絡(luò)架構(gòu),數(shù)據(jù)平面統(tǒng)一負責(zé)處理業(yè)務(wù)訪問數(shù)據(jù)的流量,控制平面則用來處理資源配置、狀態(tài)監(jiān)測等控制流量??刂破矫嬷饕菍赫w的資源管理,主要分為接入服務(wù)管理和容器資源管理。接入服務(wù)管理包括對各類安全接入服務(wù)的配置管理、策略管理、遠程調(diào)試管理、日志審計管理等,容器資源管理包括部署集群管理、資源調(diào)度管理、服務(wù)編排管理、運行監(jiān)控管理等。
3.1.1 虛擬化轉(zhuǎn)發(fā)平面
集群在數(shù)據(jù)平面上構(gòu)建基于高速數(shù)據(jù)包處理框架的數(shù)據(jù)虛擬化轉(zhuǎn)發(fā)平面,其中在每個工作節(jié)點上創(chuàng)建虛擬交換機、CNI插件[7]等組件,并在整個集群的流量入口處創(chuàng)建一個負載均衡器,容器集群管理框架依據(jù)服務(wù)資源配置在工作節(jié)點上創(chuàng)建容器。每個容器創(chuàng)建過程中,CNI插件分別創(chuàng)建容器中的虛擬網(wǎng)絡(luò)接口與工作節(jié)點上虛擬交換機的虛擬網(wǎng)絡(luò)接口[8],兩者之間相互關(guān)聯(lián),如圖2所示。業(yè)務(wù)數(shù)據(jù)流量從外部交換機進入負載均衡器,負載均衡器根據(jù)策略分配流量至工作節(jié)點的DPDK網(wǎng)絡(luò)接口,經(jīng)過虛擬交換機路由之后進入容器中服務(wù)程序處理,整個數(shù)據(jù)平面路徑都在用戶態(tài)協(xié)議棧中完成,不再額外需要用戶態(tài)到內(nèi)核態(tài)的報文拷貝操作,極大提升了數(shù)據(jù)包處理的效率。
圖2 數(shù)據(jù)虛擬化轉(zhuǎn)發(fā)平面邏輯圖
虛擬交換機是基于對矢量包的批處理思想而設(shè)計的[9],數(shù)據(jù)包矢量處理結(jié)構(gòu)是由多個節(jié)點構(gòu)成的有向圖,每個圖節(jié)點代表該矢量包在處理過程中的一個環(huán)節(jié)。因此,在大量業(yè)務(wù)數(shù)據(jù)包到來的場景下,矢量化的批處理使得該系統(tǒng)的處理能力相比其他虛擬交換機更為強大,收取到的數(shù)據(jù)包組成為一個個數(shù)據(jù)包矢量集合,將集合內(nèi)的數(shù)據(jù)包矢量一批批地通過數(shù)據(jù)包處理邏輯節(jié)點進行批量處理。
負載均衡器是基于DPDK設(shè)計的用戶態(tài)負載均衡[10],通過對網(wǎng)卡的劫持,繞過內(nèi)核協(xié)議棧,基于用戶態(tài)自定義輕量級協(xié)議棧,對報文進行解析,支持CPU綁核,實現(xiàn)關(guān)鍵數(shù)據(jù)的無鎖化處理,避免了上下文切換所需要的額外開銷。負載均衡器在集群中作為中心調(diào)度節(jié)點,實時動態(tài)感知各個容器服務(wù)的運行狀態(tài)及終端接入量,根據(jù)負載均衡策略分配業(yè)務(wù)流量到各個工作節(jié)點上的容器。負載均衡器根據(jù)不同類型終端的接入性能需求,給每一種類別的接入服務(wù)賦予一個權(quán)值,調(diào)度中心根據(jù)接入服務(wù)業(yè)務(wù)的承載量分配集群資源。
3.1.2 高性能容器網(wǎng)絡(luò)
集群容器網(wǎng)絡(luò)采用基于DPDK實現(xiàn)的自定義CNI插件,支持多個不同類別的網(wǎng)絡(luò)接口,具備將多個接口添加到容器的功能。容器可以通過不同類型的接口連接到多個容器網(wǎng)絡(luò),并且每個接口都使用用戶自定義的資源配置。容器網(wǎng)絡(luò)功能可通過多個網(wǎng)絡(luò)接口進行分離控制,實現(xiàn)容器網(wǎng)絡(luò)控制平面和數(shù)據(jù)平面相互分開。
工作節(jié)點與容器之間網(wǎng)絡(luò)接口采用基于共享內(nèi)存實現(xiàn)的虛擬網(wǎng)絡(luò)接口,業(yè)務(wù)數(shù)據(jù)流量從工作節(jié)點上的DPDK網(wǎng)絡(luò)接口進入后,經(jīng)過數(shù)據(jù)平面虛擬交換機虛擬路由轉(zhuǎn)發(fā)到達容器的虛擬網(wǎng)絡(luò)接口,容器內(nèi)安全接入服務(wù)對業(yè)務(wù)流量處理,例如SSL認(rèn)證握手、密鑰交換、數(shù)據(jù)加密及數(shù)據(jù)解密[11]等。加解密處理完之后,再根據(jù)安全策略繼續(xù)向后轉(zhuǎn)發(fā)或返回錯誤,整個容器網(wǎng)絡(luò)的數(shù)據(jù)平面路徑完全不經(jīng)過內(nèi)核態(tài)協(xié)議棧。
數(shù)據(jù)虛擬化轉(zhuǎn)發(fā)平面采用IPIP/GRE隧道模式來實現(xiàn)對容器網(wǎng)絡(luò)的高性能負載[12-14],如圖2所示。負載均衡器在請求報文的首部之前再封裝1層隧道報文頭,容器中服務(wù)程序收到源地址是負載均衡器地址的請求報文后,會首先拆開第1層封裝,匹配原始報文中的目的地址是否是自己預(yù)設(shè)的IPIP/GRE虛擬地址,命中后繼續(xù)進入下一層處理。如有返回業(yè)務(wù)數(shù)據(jù)不再經(jīng)過負載均衡器,直接將數(shù)據(jù)返回至原始報文中的源地址,將業(yè)務(wù)數(shù)據(jù)流量轉(zhuǎn)發(fā)性能損耗降到最低。
硬件資源由集群管理框架統(tǒng)一管理,根據(jù)業(yè)務(wù)訪問服務(wù)需求進行資源調(diào)度分配。對于安全接入服務(wù)而言,底層均是無差別的硬件資源,硬件資源池中各個工作節(jié)點的硬件配置本身可以各不相同,虛擬化技術(shù)將底層硬件的差別屏蔽[15-18]。集群管理框架為上層安全接入服務(wù)提供統(tǒng)一的計算、網(wǎng)絡(luò)、存儲、加解密服務(wù)等系統(tǒng)資源。當(dāng)需要對某個服務(wù)進行擴容時,只需要加入新的硬件資源節(jié)點,部署虛擬化管理框架、加載相應(yīng)的服務(wù)鏡像,將新節(jié)點加入到集群中,創(chuàng)建數(shù)據(jù)平面和控制平面的網(wǎng)絡(luò)接口,完成所需的網(wǎng)絡(luò)配置,即可完成服務(wù)的擴容。
資源動態(tài)伸縮采用基于機器學(xué)習(xí)的周期性檢測算法,通過對實例接入業(yè)務(wù)負載的訪問數(shù)量的實時監(jiān)測數(shù)據(jù)進行計算預(yù)測。在預(yù)測實例負載即將處于高峰前的一段時間,便提前對實例執(zhí)行擴容操作,使實例能夠平穩(wěn)度過整個業(yè)務(wù)高峰期。安全接入服務(wù)會在實例每天的業(yè)務(wù)高峰期開始之前進行擴容,以使實例更好地應(yīng)對周期性的業(yè)務(wù)峰值。
集群以服務(wù)為對象,從CPU/內(nèi)存使用率、終端接入量等方面對集群提供的服務(wù)狀態(tài)進行持續(xù)監(jiān)控,結(jié)合服務(wù)設(shè)定的上下限進行綜合評定,如圖3所示。當(dāng)預(yù)測服務(wù)整體負載較高時,添加服務(wù)副本進行擴容,負載均衡器優(yōu)先向新添加的副本分配新的業(yè)務(wù)流量;當(dāng)服務(wù)負載較低時,平滑退出部分副本,副本平滑退出過程中負載均衡器停止對其分配新的流量,副本處理完原有所有業(yè)務(wù)數(shù)據(jù)后自動退出。當(dāng)集群檢測到有節(jié)點故障時,自動將故障點節(jié)點的服務(wù)遷移到其他可用節(jié)點上;當(dāng)故障節(jié)點恢復(fù)時,集群動態(tài)將一些負載遷移到恢復(fù)的節(jié)點上。
圖3 資源動態(tài)伸縮邏輯圖
除此之外,當(dāng)程序有新版本需要升級時,采用平滑升級方式,舊版本程序逐步退出服務(wù),新版本程序逐步接管服務(wù),最終實現(xiàn)新版本程序的完全升級。
容器中服務(wù)程序采用統(tǒng)一的高可擴展的網(wǎng)絡(luò)高速處理框架[19-22],將網(wǎng)絡(luò)數(shù)據(jù)流向量化,采用分層處理,支持基于網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)篩選,并通過植入計算插件節(jié)點,完成不同協(xié)議的業(yè)務(wù)處理邏輯,從而實現(xiàn)功能擴展。每個計算插件節(jié)點完成不同協(xié)議的業(yè)務(wù)處理邏輯,從而實現(xiàn)基于統(tǒng)一軟件框架的國密SSL、SSAL、IPsec等協(xié)議處理功能,且可對計算插件節(jié)點進行靈活編排,根據(jù)不同業(yè)務(wù)系統(tǒng)的安全需求提供靈活性的安全接入服務(wù)。
如圖4所示,負載均衡器分配業(yè)務(wù)流量進入容器中服務(wù)程序,首先進入DPDK虛擬物理接口層接收[23-25],收到后進入鏈路層的擴展功能計算節(jié)點處理。按照優(yōu)先級順序執(zhí)行入侵檢測、阻斷響應(yīng)、下一層處理,然后進入網(wǎng)絡(luò)層的擴展功能計算節(jié)點處理。按照優(yōu)先級順序執(zhí)行訪問控制、SSL/IPsec認(rèn)證、入侵檢測、下一層處理,運行時可通過動態(tài)實時配置決定插件節(jié)點邏輯是否啟用。這樣的設(shè)計是為滿足面向電力物聯(lián)網(wǎng)業(yè)務(wù)動態(tài)變化的終端接入需求,實現(xiàn)面向集群業(yè)務(wù)的接入服務(wù)資源動態(tài)分配,提升安全防護能力靈活伸縮性,保證邊界安全防護服務(wù)的高可用性。同時,增強電力物聯(lián)網(wǎng)業(yè)務(wù)安全防護強度,針對監(jiān)測到的仿冒終端或失陷主機進行聯(lián)動封禁,保證惡意行為快速封堵。
圖4 計算插件節(jié)點編排邏輯圖
實驗以國密算法的SSLVPN應(yīng)用場景為例,SSL握手協(xié)議采用國密SM2/SM3算法,記錄協(xié)議采用國密SM4算法,使用SSL客戶端批處理腳本模擬一定數(shù)量的移動終端進行高并發(fā)訪問,對傳統(tǒng)方法與本文方法進行對比分析。
實驗采用相同配置的被測物理機器,分別部署傳統(tǒng)SSLVPN應(yīng)用程序和基于容器的安全接入虛擬化服務(wù),通過VPN客戶端批處理進行終端安全接入的并發(fā)量測試,對比傳統(tǒng)方法與本文提出的方法之間的性能差異。其中,傳統(tǒng)方法為部署基于通用Linux網(wǎng)絡(luò)協(xié)議棧多線程I/O模型的應(yīng)用程序的設(shè)備集群;本文方法為部署高可擴展的網(wǎng)絡(luò)高速處理框架的服務(wù)計算節(jié)點,能將數(shù)據(jù)平面與控制平面完全分離,擁有高速數(shù)據(jù)包處理的數(shù)據(jù)虛擬化轉(zhuǎn)發(fā)平面、高性能容器網(wǎng)絡(luò)的容器化服務(wù)集群。
實驗中,本文方法部署時將單個SSLVPN服務(wù)容器的CPU資源限制使用1個邏輯CPU核,內(nèi)存資源限制在1 GB大頁內(nèi)存的場景下,傳統(tǒng)方法則默認(rèn)使用物理硬件的所有資源,然后進行以下2組對比實驗。
第1組實驗是單節(jié)點性能實驗。本文方法在單一物理節(jié)點上部署其硬件資源所能支持的最多數(shù)量的容器,受內(nèi)存容量限制總共16個,并將所有容器加入到負載均衡器進行流量分發(fā),與傳統(tǒng)方法在單臺安全接入物理設(shè)備上部署SSLVPN應(yīng)用程序的性能進行實驗對比,實驗結(jié)果如圖5所示。
圖5 單節(jié)點終端接入并發(fā)量性能實驗
實驗數(shù)據(jù)表明,傳統(tǒng)方法單臺設(shè)備在VPN客戶端批處理模擬的SSL終端接入數(shù)量接近9萬時開始出現(xiàn)連接失敗的情況,達到性能瓶頸,無法再接收更多的SSL終端接入該服務(wù)。而本文方法在SSL終端量在達到16萬左右時逐漸趨于平穩(wěn),受到物理內(nèi)存限制達到極限。從兩者的性能對比看,本文方法處理性能遠強于傳統(tǒng)方法單臺設(shè)備的整體性能。
第2組實驗是多節(jié)點性能實驗。本文方法在3臺物理節(jié)點上構(gòu)建基于容器的安全接入服務(wù)集群,并將所有節(jié)點上的容器加入到負載均衡器進行流量分發(fā),與傳統(tǒng)方法在3臺安全接入物理設(shè)備上部署SSLVPN應(yīng)用程序組成的負載集群的性能進行實驗對比,實驗結(jié)果如圖6所示。
圖6 多節(jié)點終端接入并發(fā)量性能實驗
由圖6可以看出,當(dāng)VPN客戶端批處理模擬的SSL終端接入數(shù)量在26萬以下時,2種方法均能全部正常處理。但當(dāng)VPN客戶端批處理輸出的SSL終端接入數(shù)量繼續(xù)增加時,傳統(tǒng)的方法已經(jīng)到了性能極限,無法處理更多的并發(fā)連接數(shù),甚至在并發(fā)性能上呈現(xiàn)下降趨勢,這主要是由于頻繁的cache miss、線程切換、上下文切換等導(dǎo)致CPU負荷很高。而本文采用的方法在最高終端接入數(shù)上則比傳統(tǒng)方法高出約100%,同時在VPN客戶端批處理輸出的SSL終端接入數(shù)量超過本文的方法所能處理的最高并發(fā)數(shù)時,能夠維持最高并發(fā)性能,沒有明顯的性能下降,有效且合理地利用了有限的硬件資源。
由此可見,當(dāng)集群中的物理資源數(shù)量不斷增加時,整個基于容器的安全接入裝置虛擬化集群所能提供服務(wù)的能力呈線性增長趨勢。當(dāng)訪問量在某一時段下降時,空閑的VPN服務(wù)容器可以得到動態(tài)釋放,物理資源得到釋放,可以動態(tài)地對硬件資源進行分配,增強了整體的擴展性、伸縮性和高可用性。
基于容器的安全接入虛擬化技術(shù)包括了基于高速數(shù)據(jù)包處理框架的數(shù)據(jù)虛擬化轉(zhuǎn)發(fā)平面、基于共享內(nèi)存虛擬網(wǎng)絡(luò)的高性能容器網(wǎng)絡(luò)和高可擴展的網(wǎng)絡(luò)高速處理框架的服務(wù)計算節(jié)點,具有傳統(tǒng)基于通用網(wǎng)絡(luò)協(xié)議棧多線程應(yīng)用程序所未有的擴展能力與性能優(yōu)勢。同時,安全接入虛擬化技術(shù)還是基于成熟集群管理框架的容器集群,也為很多的復(fù)雜業(yè)務(wù)場景提供了新的解決方案。本文提出的基于容器的安全接入虛擬化模型,通過對硬件資源集群的容器化、統(tǒng)一調(diào)度管理,數(shù)據(jù)平面與控制平面的完全并行化,數(shù)據(jù)虛擬化轉(zhuǎn)發(fā)平面的構(gòu)建,服務(wù)計算插件節(jié)點的靈活編排,具有高并發(fā)、高可用接入、支持彈性伸縮、平滑升級、可擴展性強等優(yōu)勢。當(dāng)然本文方法仍存在不足,例如如何通過安全隔離層保護容器中應(yīng)用信息,將是本文提出的安全接入虛擬化技術(shù)下一步的研究重點。