王寶生,張維琦,鄧文平
(國防科技大學 計算機學院, 湖南 長沙 410073)
數(shù)據(jù)中心通過虛擬化技術(shù)為云計算構(gòu)建虛擬資源池。云計算通過數(shù)據(jù)中心的虛擬資源管理技術(shù)即可實現(xiàn)資源自動部署、動態(tài)擴展、按需分配等功能,滿足用戶按需和即付即用的資源獲取需求。虛擬化是構(gòu)建云基礎(chǔ)架構(gòu)不可或缺的關(guān)鍵技術(shù)之一。然而,當前虛擬資源管理仍然存在著云計算資源利用率低、應用與平臺無法解耦、應用運行環(huán)境局限性強、運維人員控制力下降等問題。數(shù)據(jù)中心的資源虛擬化初始主要由虛擬機實現(xiàn),隨著容器技術(shù)的逐漸成熟,虛擬機體量大、部署困難的問題逐漸暴露[1-2]。
隨著Docker[3-5]等容器化技術(shù)的發(fā)展和推廣,基于容器的資源虛擬化方式正在逐步代替虛擬機,容器技術(shù)越來越多地被應用于數(shù)據(jù)中心以實現(xiàn)大規(guī)模集群部署。容器是一種內(nèi)核虛擬化技術(shù),可以提供輕量級的虛擬化,以便隔離進程和資源,而且不需要提供指令解釋機制以及全局虛擬化的復雜操作。容器的輕量級資源管理和秒級啟動等特性可以簡化管理難度,解決數(shù)據(jù)中心當前所面臨的虛擬資源管理等問題,使用容器代替虛擬機在數(shù)據(jù)中心實現(xiàn)大規(guī)模集群部署已經(jīng)成為必然趨勢[5-9]。
容器技術(shù)仍處于發(fā)展階段,在集成部署等方面都有很大的發(fā)展空間,尤其是網(wǎng)絡(luò)層面缺乏系統(tǒng)的管理架構(gòu)和基本的控制手段[10]。容器的簡易部署特性使容器可以快速實現(xiàn)大規(guī)模的集群部署,但也相應地增加了容器網(wǎng)絡(luò)的離散程度,導致網(wǎng)絡(luò)管理控制困難。容器在集群中不僅需要承擔復雜的計算任務(wù),還需要承擔不同節(jié)點間的網(wǎng)絡(luò)通信和數(shù)據(jù)交互,復雜的網(wǎng)絡(luò)交互和快速變化的網(wǎng)絡(luò)重構(gòu)也對網(wǎng)絡(luò)控制提出了更高的要求[11-13]。實現(xiàn)面向大規(guī)模容器集群的網(wǎng)絡(luò)控制成為數(shù)據(jù)中心進行容器化變革時亟待解決的問題[14]。
容器網(wǎng)絡(luò)模型是網(wǎng)絡(luò)控制面臨的首要難題。容器技術(shù)發(fā)展至今,網(wǎng)絡(luò)方面發(fā)展滯后,網(wǎng)絡(luò)層面缺乏標準接口,兩種后續(xù)的網(wǎng)絡(luò)方案——容器網(wǎng)絡(luò)模型(Container Network Model, CNM)和容器網(wǎng)絡(luò)接口(Container Network Interface, CNI)[15-16]也難以定義標準的網(wǎng)絡(luò)接入模型[17-18]。因此,大量的創(chuàng)業(yè)公司和開源組織開發(fā)了各式各樣的網(wǎng)絡(luò)實現(xiàn),產(chǎn)生了許多復雜的解決方案,從而增加了網(wǎng)絡(luò)管理的難度[19-22]。
容器網(wǎng)絡(luò)的安全與隔離策略是當前面臨的另一關(guān)鍵問題。由于容器網(wǎng)絡(luò)離散程度的提高,傳統(tǒng)網(wǎng)絡(luò)安全策略已經(jīng)不再適用,容器在網(wǎng)絡(luò)層面缺乏有效的隔離與控制手段。容器依賴于操作系統(tǒng)存在,雖然可以借用Linux系統(tǒng)原有的方案實現(xiàn)安全與隔離,但仍舊缺乏系統(tǒng)完整的安全控制方案。容器網(wǎng)絡(luò)急需一套完整的安全隔離方式,從而實現(xiàn)對網(wǎng)絡(luò)的控制,保證容器網(wǎng)絡(luò)的安全[23-25]。
本文采用基于虛擬可擴展局域網(wǎng)[26-27](Virtual extensible Local Area Network, VxLAN)的Overlay組網(wǎng)和基于macvlan[28-31]的網(wǎng)絡(luò)模型為基礎(chǔ),分別發(fā)揚兩者擴展性強和傳輸性能高的特點,根據(jù)不同網(wǎng)絡(luò)需求進行適配;結(jié)合兩種網(wǎng)絡(luò)基本模型,采用機器學習中的邏輯回歸模型用于網(wǎng)絡(luò)模型適配,不僅實現(xiàn)了網(wǎng)絡(luò)模型的快速匹配,還在一定程度上實現(xiàn)了智能化與自動化,保證了網(wǎng)絡(luò)模型適配的高效性;針對容器網(wǎng)絡(luò)系統(tǒng)管理控制方案的缺乏問題,結(jié)合現(xiàn)有安全手段,歸納出系統(tǒng)化實現(xiàn)網(wǎng)絡(luò)安全隔離的方法與手段,在保證基本網(wǎng)絡(luò)功能的前提下以最小的代價實現(xiàn)網(wǎng)絡(luò)的隔離與控制。
在整個架構(gòu)中,以網(wǎng)絡(luò)模型選擇為基礎(chǔ),通過服務(wù)端實現(xiàn)網(wǎng)絡(luò)部署的全部過程。其中,Web界面負責對用戶需求進行抽象,并將當前網(wǎng)絡(luò)狀態(tài)進行展示;服務(wù)端則掌握所有主機以及容器節(jié)點的互聯(lián)互通狀態(tài),通過節(jié)點反饋的信息繪制網(wǎng)絡(luò)拓撲;數(shù)據(jù)庫用于記錄網(wǎng)絡(luò)服務(wù)歷史,并提供鏡像管理等服務(wù)[32-33]。整體架構(gòu)如圖1所示。
圖1 大規(guī)模容器集群網(wǎng)絡(luò)控制架構(gòu)Fig.1 Large-scale container cluster network control architecture
整體架構(gòu)為上中下結(jié)構(gòu),通過設(shè)置獨立的管理層,便于實現(xiàn)容器網(wǎng)絡(luò)的靈活部署。最頂層為Web層,用戶在此填寫個人需求,查看日志,并向服務(wù)器發(fā)送指令。服務(wù)端采用應用程序編程接口(Application Programming Interface, API)調(diào)用的方式對網(wǎng)絡(luò)進行控制,根據(jù)Agent返回的信息形成整體網(wǎng)絡(luò)結(jié)構(gòu),并將相關(guān)信息通過Web界面向外界展示。最底層為容器所在主機,采用Agent組件與上層服務(wù)進行信息交互,通過API調(diào)用實現(xiàn)網(wǎng)絡(luò)配置、網(wǎng)絡(luò)狀態(tài)信息上傳等功能。底層容器網(wǎng)絡(luò)的所有配置信息都來自服務(wù)端,服務(wù)端可以根據(jù)組網(wǎng)需求,統(tǒng)一進行規(guī)劃配置,從而最大限度地實現(xiàn)容器組網(wǎng)的靈活性。
網(wǎng)絡(luò)控制架構(gòu)采用統(tǒng)一管理的方式,為容器網(wǎng)絡(luò)智能適配提供模式基礎(chǔ)。由Web界面獲取用戶網(wǎng)絡(luò)需求,根據(jù)網(wǎng)絡(luò)特點生成json文件,遞交智能適配模塊計算最佳適配網(wǎng)絡(luò),實現(xiàn)以特定網(wǎng)絡(luò)需求為牽引、智能適配容器網(wǎng)絡(luò)模型的目的[17-18]。
隔離和控制是保證網(wǎng)絡(luò)安全性的重要方式[19]。良好的網(wǎng)絡(luò)隔離可以確保不同隔離區(qū)域的容器或主機不能相互通信,從不同方面進行隔離,減少節(jié)點被攻擊和干擾的可能性。本架構(gòu)設(shè)計的隔離方式主要涉及以下幾個方面:
1)主機間的物理隔離:容器部署在多臺主機上,不同主機間不能直接進行通信,實現(xiàn)容器網(wǎng)絡(luò)間的第一層隔離。
2)容器自身的安全隔離機制:Docker容器利用Namespace和cgroups來實現(xiàn)容器隔離技術(shù)。其中,Namespace為隔離技術(shù)的第一層,確保 Docker 容器內(nèi)的進程不可見,并且與外部進程相互隔離,互不影響。cgroups為LXC(Linux containers)技術(shù)的關(guān)鍵組件,用于實現(xiàn)運行時的資源限制。
3)容器網(wǎng)絡(luò)虛擬局域網(wǎng)(Virtual Local Area Network, VLAN)劃分:處于同一主機的容器可以劃分到不同VLAN中,不同VLAN的容器間不能進行通信。
4)iptables訪問控制:通過iptables過濾表對容器和容器間、容器和主機間的通信進行限制,細致的訪問控制規(guī)則可以實現(xiàn)網(wǎng)絡(luò)的精細化隔離控制。
根據(jù)容器技術(shù)的特點,計劃采用基于隧道技術(shù)的大二層網(wǎng)絡(luò)部署方式。隧道技術(shù)屬于數(shù)據(jù)平面的虛擬化,通過對二層幀進行再封裝,把底層網(wǎng)絡(luò)歸結(jié)在一個平面,底層網(wǎng)絡(luò)可達之處便是二層網(wǎng)絡(luò)可及之處,在組網(wǎng)的物理位置上提供了幾乎無限的可擴展性,可以充分發(fā)揚容器組網(wǎng)擴展性強的優(yōu)勢特點。在現(xiàn)存的多種隧道技術(shù)中,本文計劃采用以VxLAN技術(shù)為代表的第四代隧道技術(shù)進行網(wǎng)絡(luò)部署。
VxLAN技術(shù)將隧道設(shè)備與虛擬機直連,在物理接入交換機上甚至服務(wù)器內(nèi)部的管理程序中進行部署,形成二層端到端的隧道。通過在接入設(shè)備上打通隧道,將IP的靈活性用于傳輸,從而實現(xiàn)了網(wǎng)絡(luò)的進一步擴展。在容器網(wǎng)絡(luò)集群中應用VxLAN技術(shù),基于已有的服務(wù)或IP網(wǎng)絡(luò),為分散的物理站點提供二層互聯(lián)功能。不同物理站點可以涵蓋多個網(wǎng)段,同一站點中的容器分屬不同VLAN,不同VLAN的容器間不能進行通信,示意圖如圖2所示。
在容器網(wǎng)絡(luò)環(huán)境中,將每個服務(wù)器分屬不同集群網(wǎng)絡(luò)的容器分配到不同的子網(wǎng)網(wǎng)段,當網(wǎng)絡(luò)中的信息經(jīng)過VxLAN tunnel傳輸?shù)竭_邊緣設(shè)備VTEP(VxLAN tunnel end point)后,對數(shù)據(jù)幀進行識別、轉(zhuǎn)發(fā)、封裝/解封裝等操作,實現(xiàn)網(wǎng)絡(luò)信息的定向傳輸和隔離。根據(jù)待啟動容器當前的網(wǎng)絡(luò)狀態(tài),在容器啟動命令中直接添加網(wǎng)絡(luò)信息,包括所屬網(wǎng)段、連接方式以及訪問權(quán)限等信息,實現(xiàn)網(wǎng)絡(luò)信息預配置。在確保網(wǎng)絡(luò)性能的條件下,通過簡化容器所占資源,實現(xiàn)容器節(jié)點的快速加入和刪除。
為了充分發(fā)揮容器性能,提高網(wǎng)絡(luò)適配性,本文設(shè)計了基于macvlan的容器網(wǎng)絡(luò)模型,在保證網(wǎng)絡(luò)基本功能的前提下盡可能地提高網(wǎng)絡(luò)傳輸效率,保證網(wǎng)絡(luò)通信質(zhì)量。macvlan是Linux內(nèi)核實現(xiàn)的一個虛擬網(wǎng)絡(luò)設(shè)備,可以使一塊物理網(wǎng)卡虛擬出多塊虛擬網(wǎng)卡,每一塊虛擬網(wǎng)卡都擁有不同的媒體訪問控制地址(Media Access Control address, MAC)。當物理網(wǎng)卡接收到數(shù)據(jù)時,根據(jù)虛擬網(wǎng)卡MAC地址信息將數(shù)據(jù)轉(zhuǎn)發(fā)給相應的網(wǎng)卡。macvlan設(shè)備共有四種模式,其功能和作用介紹如下:
1)bridge模式:這種模式類似于Linux bridge。一塊物理網(wǎng)卡虛擬出來的所有macvlan設(shè)備之間可以直接交換數(shù)據(jù),如同連在同一個交換機上,結(jié)構(gòu)如圖3(a)所示。
2)虛擬以太端口匯聚器(Virtual Ethernet Port Aggregator, VEPA)模式:當父網(wǎng)卡從子網(wǎng)卡接收到數(shù)據(jù)時,即使目的地址為同一主機上到虛擬設(shè)備,數(shù)據(jù)仍舊會通過處于外界的上游交換機進行轉(zhuǎn)發(fā),結(jié)構(gòu)如圖3(b)所示。
3)Private模式:這種模式是一種隔離模式,處在這種模式下的子設(shè)備不能與其他子設(shè)備之間通信。
4)Passthru模式:在這種模式下,一塊物理網(wǎng)卡只允許擁有一個macvlan子設(shè)備。
(a) bridge模式(a) bridge mode (b) VEPA網(wǎng)絡(luò)模式(b) VEPA network mode圖3 macvlan網(wǎng)絡(luò)模式Fig.3 macvlan network mode
在容器網(wǎng)絡(luò)技術(shù)中,macvlan是與Docker Overlay類似的網(wǎng)絡(luò)方案,是一種支持跨主機方式的容器網(wǎng)絡(luò)驅(qū)動。macvlan在進行網(wǎng)絡(luò)通信時不需要創(chuàng)建網(wǎng)橋,直接通過以太網(wǎng)接口連接到物理網(wǎng)絡(luò),在眾多容器網(wǎng)絡(luò)方案中同環(huán)境下網(wǎng)絡(luò)性能最好。另外,macvlan根據(jù)終端設(shè)備的MAC地址來劃分VLAN,即使用戶改變了接入端口,容器也仍然處在原VLAN中,便于對容器節(jié)點進行靈活的遷移控制。
通過對容器組網(wǎng)過程進行細化,充分發(fā)揚容器精巧、靈活的特點,實現(xiàn)容器在不同網(wǎng)絡(luò)中快速、穩(wěn)定的遷移。本文利用虛擬交換機(Open VSwitch, OVS)搭建主機間的網(wǎng)橋,通過Docker容器API調(diào)用的方式實現(xiàn)容器虛擬網(wǎng)卡的靈活添加和刪除,并分配相應的IP地址,從而實現(xiàn)容器在不同網(wǎng)絡(luò)中的靈活部署。
在網(wǎng)絡(luò)中對容器節(jié)點進行加入或者退出操作時,不僅需要考慮新網(wǎng)絡(luò)中網(wǎng)絡(luò)節(jié)點的連通關(guān)系,還需要保證原有網(wǎng)絡(luò)的穩(wěn)定性。網(wǎng)絡(luò)中容器主要分為兩種,一種為master節(jié)點,一種為node節(jié)點。其中,master節(jié)點主要用于整體網(wǎng)絡(luò)架構(gòu)的管理,node節(jié)點實現(xiàn)基本的網(wǎng)絡(luò)功能,所有node節(jié)點定時向master節(jié)點發(fā)送狀態(tài)信息,實現(xiàn)網(wǎng)絡(luò)整體可控。當node節(jié)點需要退出時,需要先向master節(jié)點注銷;同理,當節(jié)點需要加入網(wǎng)絡(luò)時,也需要在master節(jié)點進行注冊,實現(xiàn)節(jié)點的有序加入。
由于容器網(wǎng)絡(luò)通信模式的不同特點,網(wǎng)絡(luò)節(jié)點的遷移只能針對部分容器。當前,容器網(wǎng)絡(luò)通信模式主要有host、bridge、container、none、自定義五種。其中,host與container模式采用共享主機和容器網(wǎng)絡(luò)的配置方式,限制節(jié)點向本機或者容器之外的網(wǎng)絡(luò)進行遷移,不利于網(wǎng)絡(luò)的靈活性。所以本文在進行容器網(wǎng)絡(luò)部署時,主要采用bridge、none以及自定義模式,保證容器節(jié)點的可遷移性。
容器快速啟動和易于遷移的特性對網(wǎng)絡(luò)模型的快速選擇提出了更高的要求。
在對歷史任務(wù)進行檢測的基礎(chǔ)上進行智能分析匹配,具體步驟為:①提取任務(wù)對網(wǎng)絡(luò)的必要需求,將數(shù)據(jù)進行分類,整理數(shù)據(jù)格式;②通過分類器實現(xiàn)網(wǎng)絡(luò)模型的快速適配;③添加數(shù)據(jù)進入樣本集,重新生成分類器。建立歷史信息庫,當接收到相同請求時,直接參考歷史任務(wù)所使用的網(wǎng)絡(luò)方案,減少計算開銷,流程如圖4所示。
圖4 網(wǎng)絡(luò)智能選擇流程圖Fig.4 Network intelligent selection flow chart
網(wǎng)絡(luò)需求信息采集主要針對容器網(wǎng)絡(luò)中的關(guān)鍵特點信息進行收集,在綜合考慮容器網(wǎng)絡(luò)安全性、連通性和辨識性的前提下設(shè)定需求描述,主要包含網(wǎng)絡(luò)、主句、安全和標簽等幾個方面。
Logistic回歸模型是一種多元統(tǒng)計分析模型,可以完成一組自變量與一個因變量之間的回歸統(tǒng)計分析工作,這些自變量可以是連續(xù)型數(shù)據(jù)也可以是離散型數(shù)據(jù)。Logistic回歸模型需要訓練樣本和測試樣本兩種樣本,本文初始隨機生成2000條網(wǎng)絡(luò)需求特點,并對網(wǎng)絡(luò)特點進行專家適配,得到訓練樣本,在訓練樣本中隨機選擇300條數(shù)據(jù)作為測試樣本,樣本示例如表1所示。其中,安全性、網(wǎng)絡(luò)規(guī)模、傳輸效率、擴展性四欄中的數(shù)據(jù)表示特征權(quán)重,網(wǎng)絡(luò)模型中“0”表示基于VxLAN的Overlay網(wǎng)絡(luò)模型,“1”表示基于macvlan的網(wǎng)絡(luò)模型。
表1 樣本數(shù)據(jù)格式
本文的網(wǎng)絡(luò)適配主要包含基于VxLAN的Overlay網(wǎng)絡(luò)模型和基于macvlan的網(wǎng)絡(luò)模型兩種,因此采用Binary Logistic回歸模型。二分類問題的概率與自變量之間的關(guān)系圖形往往是一個S形曲線,采用的Sigmoid函數(shù)實現(xiàn)邏輯函數(shù)的形式為:
(1)
根據(jù)離散型隨機變量期望值的定義,用P代表自變量為x時y=1的概率,并采用線性模型進行分析,可得P(y=1)=p。采用線性模型進行分析,其公式變換如下:
P(y=1|x)=b0+b1x1+b2x2+…+bnxn
(2)
由于概率P和因變量非線性度較高,因此引入logit變換,使得logit(P)與自變量之間存在線性相關(guān)的關(guān)系,邏輯回歸模型定義如下:
(3)
此時,可計算概率:
(4)
用α和β表示概率,可得:
(5)
(6)
其中:α為選擇基于VxLAN的Overlay網(wǎng)絡(luò)模型的概率;β為選擇基于macvlan的網(wǎng)絡(luò)模型的概率;bi(i=0,1,2,…,n)為基于訓練樣本得到的回歸系數(shù);n為參與回歸分析的自變量的數(shù)量;xi(i=0,1,2,…,n)為自變量。
通過隨機邏輯回歸模型篩選特征的結(jié)果如表2所示。
表2 隨機邏輯回歸模型特征篩選
由特征篩選結(jié)果可得,安全性與傳輸效率為網(wǎng)絡(luò)模型選擇的主要影響因子,網(wǎng)絡(luò)規(guī)模與擴展性的影響程度也接近50%,可以采用這四種特征對最終網(wǎng)絡(luò)模型進行預測。經(jīng)過測試,本文通過邏輯回歸模型實現(xiàn)的網(wǎng)絡(luò)模型適配的正確率為94.6%。
結(jié)合容器自身的資源隔離特點,融入OVS虛擬網(wǎng)橋技術(shù),用以搭建容器通信虛擬網(wǎng)橋,在OVS網(wǎng)橋基礎(chǔ)上使用VLAN隔離技術(shù),并基于不同策略利用iptables完善容器服務(wù)的訪問控制機制。通過在網(wǎng)絡(luò)配置中有針對性地設(shè)計網(wǎng)絡(luò)隔離策略,從而靈活控制容器網(wǎng)絡(luò)間、容器與主機間、主機間的通斷,保證容器網(wǎng)絡(luò)的安全性。
在超大規(guī)模容器集群網(wǎng)絡(luò)下,將不同功能、不同應用及不同用戶的容器進行邏輯隔離分層的主要方法是對其進行訪問控制配置,本節(jié)主要說明iptables在容器網(wǎng)絡(luò)隔離分層中的應用。iptables可以完成封包過濾、封包重定向和網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, NAT)等功能,其架構(gòu)如圖5所示。
圖5 iptables架構(gòu)Fig.5 iptables architecture
iptables傳輸數(shù)據(jù)包的過程如下:
1)當一個數(shù)據(jù)包進入網(wǎng)卡時,首先傳入PREROUTING鏈,內(nèi)核根據(jù)數(shù)據(jù)包目的IP判斷是否需要轉(zhuǎn)送出去。
2)如果數(shù)據(jù)包進入本機,則到達INPUT鏈,此次任何進程都會收到它。本機上運行的程序可以發(fā)送數(shù)據(jù)包,這些數(shù)據(jù)包會經(jīng)過OUTPUT鏈,然后到達POSTROUTING鏈輸出。
3)如果數(shù)據(jù)包轉(zhuǎn)發(fā)出去,并且滿足Filter/Mangle規(guī)則,數(shù)據(jù)包會經(jīng)過PREROUTING鏈后到達POSTROUTING鏈輸出。
在容器網(wǎng)絡(luò)中需要有針對性地應用iptables過濾策略對網(wǎng)絡(luò)進行配置,從而實現(xiàn)針對容器的網(wǎng)絡(luò)隔離方式。本文主要應用iptables完成了以下幾個方面的網(wǎng)絡(luò)隔離策略:同一主機內(nèi)容器間的連通與隔離、容器間跨主機互聯(lián)互通、容器間跨主機單項通信、容器與外網(wǎng)單項通信等。
基于VLAN隔離的訪問控制方法在現(xiàn)今的虛擬網(wǎng)絡(luò)中有廣泛的應用。VLAN是對二層交換機端口上的網(wǎng)絡(luò)節(jié)點的邏輯分段,不受網(wǎng)絡(luò)用戶物理位置的限制。VLAN的分組方式較為靈活,可以參考靠容器的作用、服務(wù)、結(jié)構(gòu)以及使用的應用程序等特點進行部署。VLAN在單個交換機甚至多個交換機之間進行靈活的劃分,從而解決網(wǎng)絡(luò)中的域沖突、帶寬占用等問題。在容器平臺中使用VLAN技術(shù),可以增加容器集群的網(wǎng)絡(luò)連接靈活性,將不同地點、不同網(wǎng)絡(luò)、不同用戶組合在一起,形成一個虛擬的網(wǎng)絡(luò)環(huán)境,構(gòu)成單個廣播域,增加網(wǎng)絡(luò)隔離性。
VLAN隔離在容器中的應用不同于傳統(tǒng)網(wǎng)絡(luò),不同主機內(nèi)容器所屬VLAN網(wǎng)絡(luò)劃分成為關(guān)鍵。單個容器在集群網(wǎng)絡(luò)中的啟動與刪除十分靈活,可以實現(xiàn)按需部署,從而保證了資源的按需分配,但這也導致容器網(wǎng)絡(luò)動態(tài)性和離散性的增加,容器在VLAN中加入和刪除的效率也需要得到保證。另外,同一主機內(nèi)的容器可以分數(shù)多個VLAN網(wǎng)絡(luò),多個主機間的容器也可以分屬同一VLAN,這對VLAN隔離控制提出了更高的要求。
如圖6所示,通過OVS網(wǎng)橋可以為容器設(shè)置VLAN,將容器1和容器3所在VLAN的VLAN ID設(shè)置為1,容器2和容器4所在VLAN的VLAN ID設(shè)置為2。容器1、3和容器2、4分別屬于同一個廣播域,建立起完整的虛擬通信環(huán)境。此時,容器1與容器2、4處于隔離狀態(tài),但能與容器3進行通信。使用VLAN可以保證容器之間的隔離性,提高網(wǎng)絡(luò)利用率,增強容器網(wǎng)絡(luò)的安全性和保密性。
圖6 基于OVS網(wǎng)橋的VLAN隔離結(jié)構(gòu)圖Fig.6 VLAN-based isolation OVS bridge structure
實驗主要在華為FusionServer RH2288服務(wù)器上進行,為保證網(wǎng)絡(luò)測試的正確性和準確性,本文在10臺服務(wù)器上進行實驗驗證,每臺服務(wù)器之間通過光纖進行互聯(lián)。另外,為保證容器節(jié)點基數(shù),在每臺服務(wù)器上都部署了超過1000個容器節(jié)點進行測試,基本滿足大規(guī)模容器網(wǎng)絡(luò)場景。為排除特殊因素的影響,每項實驗數(shù)據(jù)都是進行超過10次測量并篩選掉明顯錯誤項后整理所得。
容器靈活組網(wǎng)實驗主要針對網(wǎng)絡(luò)節(jié)點靈活可控和高效的組網(wǎng)效率進行。在基于VxLAN的Overlay網(wǎng)絡(luò)中進行節(jié)點靈活遷移測試,在基于macvlan的網(wǎng)絡(luò)模型中進行組網(wǎng)測試,從而分別突出兩種不同網(wǎng)絡(luò)模型擴展性好和組網(wǎng)效率高的特點。
5.1.1 節(jié)點靈活遷移
以基于VxLAN的Overlay網(wǎng)絡(luò)為基礎(chǔ)網(wǎng)絡(luò)模型,分別測試node節(jié)點的靈活遷移和部署效率。在兩臺服務(wù)器上分別部署OVS,并搭建虛擬網(wǎng)橋,其中兩臺服務(wù)器配置信息如圖7所示。
服務(wù)器1:網(wǎng)橋信息:Bridge vxbr: 10.1.2.1端口信息:Port “vxlan1”Interface“vxlan1” Type: vxlanOptions:{remote_ip=“202.197.18.35”}容器1虛擬網(wǎng)卡:10.1.2.3服務(wù)器2:網(wǎng)橋信息:Bridge vxbr: 10.1.2.2端口信息:Port “vxlan2”Interface“vxlan2” Type: vxlanOptions:{remote_ip=“202.197.18.34”}容器2虛擬網(wǎng)卡:10.1.2.4
圖7 服務(wù)器配置
Fig.7 Server configuration
每臺主機都需要配置相互通信的虛擬網(wǎng)橋,并將挑選同處于一個網(wǎng)段的地址作為網(wǎng)關(guān)。VxLAN方式定義在端口信息中,Port中定義接口名稱為vxlan1和vxlan2,Type設(shè)定為vxlan方式。在進行數(shù)據(jù)傳送時,通過remote_ip信息定義到外部主機,確保信息可以轉(zhuǎn)發(fā)到外部物理主機的IP地址。在容器中配置虛擬網(wǎng)卡,地址設(shè)定需要與虛擬網(wǎng)橋的網(wǎng)關(guān)地址相匹配。
容器間跨主機交互數(shù)據(jù)轉(zhuǎn)發(fā)路徑如下:當從服務(wù)器1上的容器1向服務(wù)器2上的容器2發(fā)送數(shù)據(jù)時,數(shù)據(jù)首先從10.1.2.3轉(zhuǎn)到主機1的202.197.18.34地址,而后通過vxbr虛擬網(wǎng)橋跨主機傳送到202.197.18.35地址,最后再轉(zhuǎn)到10.1.2.4,實現(xiàn)容器間數(shù)據(jù)的跨主機傳輸。
在基礎(chǔ)網(wǎng)絡(luò)平臺搭建完成的前提下對網(wǎng)絡(luò)靈活性進行驗證。當容器需要加入到新網(wǎng)絡(luò)中時,首先需要在master節(jié)點中進行注冊,將任務(wù)和地址等信息進行上傳,通過master節(jié)點對node節(jié)點信息進行管理,如圖8(a)所示。同理,當容器退出所在網(wǎng)絡(luò)時,也需要在master節(jié)點中刪除信息,如圖8(b)所示。當node節(jié)點在兩個網(wǎng)絡(luò)中進行遷移時,需要先在原有網(wǎng)絡(luò)中進行注銷,然后再添加進入新網(wǎng)絡(luò),node節(jié)點遷移情況如圖8(c)所示。同一node節(jié)點允許同時處于不同的網(wǎng)絡(luò)中,即容器可以在已經(jīng)加入一個網(wǎng)絡(luò)的情況下再次加入另一個網(wǎng)絡(luò)中,如圖8(d)所示。
(a) 節(jié)點加入(a) Node join
(b) 節(jié)點刪除(b) Node delete
(c) 節(jié)點遷移(c) Node migration
(d) 節(jié)點重復加入網(wǎng)絡(luò)(d) The node repeatedly joins the network圖8 節(jié)點靈活遷移Fig.8 Nodes flexible migration
通過細化網(wǎng)絡(luò)節(jié)點的遷移過程,逐步進行加入、刪除、遷移、重復加入等動作,從而實現(xiàn)網(wǎng)絡(luò)節(jié)點靈活、有序的遷移。利用master節(jié)點對網(wǎng)絡(luò)進行基本控制,明確了node節(jié)點的加入、刪除步驟,增強了對網(wǎng)絡(luò)整體架構(gòu)的控制。但是,當網(wǎng)絡(luò)規(guī)模到達一定程度的時候,單一控制節(jié)點難以對網(wǎng)絡(luò)進行合理控制,可以采用多節(jié)點管理的方式解決這一問題。
5.1.2 組網(wǎng)效率測試
網(wǎng)絡(luò)部署效率是靈活組網(wǎng)的基礎(chǔ),通過在基于macvlan網(wǎng)絡(luò)模型中測試不同規(guī)模網(wǎng)絡(luò)的部署時間,獲取網(wǎng)絡(luò)部署的基礎(chǔ)數(shù)據(jù),為大規(guī)模容器網(wǎng)絡(luò)部署提供參考。由于busybox鏡像在保證較小的存儲占用的情況下集成了Linux中幾百個常用的命令及工具,便于實現(xiàn)網(wǎng)絡(luò)基本功能,所以本試驗選用docker.io/busybox:latest為基礎(chǔ)容器鏡像進行組網(wǎng)性能測試。在進行測試時,分別在macvlan網(wǎng)絡(luò)模型中創(chuàng)建200,400,600,800,1000個容器進行組網(wǎng),測試不同規(guī)模容器的組網(wǎng)時間。以容器規(guī)模數(shù)目為主要參考繪制散點圖,如圖9所示。
(a) 創(chuàng)建時間(a) Create time
(b)刪除時間(b) Delete time圖9 不同規(guī)模容器組網(wǎng)效率Fig.9 Container under different sizes
由測試結(jié)果可以看出,當沒有超過主機處理極限的前提下,容器啟動和刪除所用時間與容器數(shù)目成正相關(guān),容器創(chuàng)建數(shù)目的多少不影響后續(xù)容器的啟動與刪除時間。在當前環(huán)境下,容器平均創(chuàng)建時間均在200 ms以內(nèi)。
在服務(wù)器中配置網(wǎng)絡(luò)基本環(huán)境,對網(wǎng)絡(luò)智能適配技術(shù)進行測試。在主機中設(shè)計好兩種網(wǎng)絡(luò)模型的適配方式,根據(jù)用戶需求,采用邏輯回歸模型計算出最佳匹配后直接應用網(wǎng)絡(luò)模型,實現(xiàn)網(wǎng)絡(luò)的快速智能部署。
通過2000條訓練樣本由邏輯回歸模型生成網(wǎng)絡(luò)模型的分類型后,利用300條測試樣本對分類器進行性能測試,測試結(jié)果表現(xiàn)為準確率、精確率、召回率以及綜合評價指標。其中,準確率是分類器預測正確性的比例,但是并不能分辨出假陽性錯誤和假陰性錯誤;精確率是指分類器預測出網(wǎng)絡(luò)模型與實際相匹配的比例;召回率也叫作靈敏度,在本例中表示網(wǎng)絡(luò)模型被分類器正確找出來的比例;綜合評價指標能反映分類器整體的性能特點。測試數(shù)據(jù)如表3所示。
表3 性能測試指標
由測試指標可得,分類器對網(wǎng)絡(luò)模型的選擇正確率達到90%以上,可以完成基本的網(wǎng)絡(luò)選型。通過受試者工作特征(Receiver Operating Characteristic, ROC)曲線以可視化的方式進一步反應分類器效果。ROC曲線對分類比例不平衡的數(shù)據(jù)集不敏感,顯示的是對超過限定閾值的所有預測結(jié)果的分類器效果,如圖10所示。
圖10 分類器ROC曲線圖Fig.10 Classifier ROC curve
圖10中,橫坐標誤警率表示所有陰性樣本中分類器識別為陽性的樣本所占比例,AUC是ROC曲線下方的面積,它把ROC曲線變成一個值,表示分類器隨機預測的效果,由圖10可見分類器預測效果可以達到99%。由此可見,采用邏輯回歸方式生成的分類器可以有效地實現(xiàn)網(wǎng)絡(luò)模型的快速智能適配,節(jié)省網(wǎng)絡(luò)適配時間,減少適配隨機性,提高網(wǎng)絡(luò)適配效率。
本實驗以O(shè)VS網(wǎng)橋為主要連通手段,應用VxLAN網(wǎng)絡(luò)隧道協(xié)議,在此基礎(chǔ)上測試VLAN隔離和iptables網(wǎng)絡(luò)策略隔離功能。其中VLAN劃分主要由OVS進行配置,通過分配不同網(wǎng)段,實現(xiàn)網(wǎng)絡(luò)間的地址隔離。使用Linux iptables建立過濾表,有針對性地對網(wǎng)絡(luò)中的數(shù)據(jù)流進行截斷,實現(xiàn)網(wǎng)絡(luò)通信鏈路的精確阻斷。簡單情況下,通過docker network create命令即可創(chuàng)建子網(wǎng),直接實現(xiàn)VLAN的劃分,在全局網(wǎng)絡(luò)規(guī)則中也可通過iptables的filter和nat表,限制不同網(wǎng)絡(luò)間的通信,部分隔離策略如表4所示。
表4 網(wǎng)絡(luò)隔離策略
對表4中已經(jīng)列舉出來的幾種基礎(chǔ)策略進行測試,并以網(wǎng)絡(luò)拓撲圖的形式進行展示,如圖11所示。通過定義過濾表的方式能實現(xiàn)對網(wǎng)絡(luò)產(chǎn)生最小影響的情況控制網(wǎng)絡(luò)的通斷,從而對全局網(wǎng)絡(luò)進行控制。單條過濾表策略,不僅可以控制單條鏈路的通信,也可以實現(xiàn)整個網(wǎng)段的隔離控制,如通過定義enable_icc為false,即可將整個子網(wǎng)
(a) 同一VLAN阻斷(a) Same VLAN blocking
(b) VLAN間單向阻斷(b) Unidirectional blocking between VLANs
(c) VLAN間雙向阻斷(c) Bidirectional blocking between VLANs
(d) 全網(wǎng)阻斷 (d) Blocking of the entire network圖11 網(wǎng)絡(luò)隔離測試Fig.11 Network isolation test
中的網(wǎng)絡(luò)全部阻斷,如圖11(a)所示;若需要單項阻斷網(wǎng)橋,只需要將這一方向的數(shù)據(jù)包丟棄,雙向阻斷即丟棄網(wǎng)橋中的所有數(shù)據(jù)包,如圖11(b)、圖11(c)所示;全網(wǎng)阻斷則只需阻斷所有網(wǎng)絡(luò)通信即可,如圖11(d)所示。
網(wǎng)絡(luò)隔離策略靈活多變,不僅可以將單個網(wǎng)絡(luò)進行隔離,還能實現(xiàn)全網(wǎng)的數(shù)據(jù)傳輸。所有的阻斷策略均記錄在數(shù)據(jù)表中,即易于后期查詢和修改,也便于對新型網(wǎng)絡(luò)進行配置。本文設(shè)計的網(wǎng)絡(luò)隔離方案,可以在對網(wǎng)絡(luò)通信影響最小的情況下實現(xiàn)網(wǎng)絡(luò)的基本隔離控制,但由于配置策略較為細致,合理的配置網(wǎng)絡(luò)規(guī)則需要對網(wǎng)絡(luò)通信規(guī)則有一定的掌握。
通過對大規(guī)模集群環(huán)境下容器網(wǎng)絡(luò)技術(shù)的發(fā)展現(xiàn)狀進行分析,探討分析了容器網(wǎng)絡(luò)控制技術(shù)在當前大規(guī)模集群中的重要作用。根據(jù)對容器網(wǎng)絡(luò)和傳統(tǒng)網(wǎng)絡(luò)進行對比,分析出容器網(wǎng)絡(luò)控制應該重點突破靈活組網(wǎng)、智能適配以及安全隔離三個方面。設(shè)計并測試網(wǎng)絡(luò)節(jié)點遷移方案,通過細化遷移過程,逐步進行加入、刪除、 遷移、重復加入等動作,實現(xiàn)了網(wǎng)絡(luò)節(jié)點的靈活、有序遷移。網(wǎng)絡(luò)智能適配主要實現(xiàn)了網(wǎng)絡(luò)模型的快速智能匹配,安全隔離模塊則通過VLAN劃分和添加過濾策略的方式實現(xiàn)了對容器網(wǎng)絡(luò)的安全控制。未來計劃逐步完成容器網(wǎng)絡(luò)控制架構(gòu)的搭建,開發(fā)專用的控制平臺,為應用開發(fā)人員、系統(tǒng)管理員以及相關(guān)研究人員在大規(guī)模容器集群上更好地部署和控制容器網(wǎng)絡(luò)提供指導。