劉紅梅
(電子科技大學成都學院,四川 成都 611731)
網絡功能虛擬化是一種虛擬化技術,常用于使用軟件解決方案替代傳統網絡硬件提供的功能。功能虛擬化和軟件定義網絡都可以使用OpenFlow技術來實現。軟件定義網絡將傳統網絡硬件分為數據平面和控制平面兩部分,實現高效的網絡配置和管理。 網絡功能虛擬化技術則將諸如防火墻和負載平衡等傳統服務進行虛擬化,從而使服務提供商能夠動態地向他們的客戶提供這些服務。基于網絡功能虛擬化技術,本文提出了以一個網絡流量監控系統,該系統的實現無須額外的硬件成本。
在傳統的網絡環境中,流量監控系統通常使用物理交換機。在這種環境下,為了檢索NetFlow數據進行分析,物理交換機應該能夠支持NetFlow協議。我們的目標是通過使用虛擬化技術重新建模這個系統架構,提高網絡管理的靈活性。本文提出了一個包含虛擬交換機、OpenFlow控制器和流量測量服務的網絡流量監控系統。
該系統由三個節點組成:一個數據節點、一個網絡節點和一個網絡節點備份。網絡流量通過虛擬交換機輸入到系統,測量服務計算流量,將收集到的數據通過消息服務發送到數據節點。數據輸入服務將數據發送到數據庫,當數據輸入服務在數據中檢測到惡意軟件活動、違反政策、協議異常、病毒檢測、帶寬異常等問題時,它使用OpenFlow控制器中的應用程序接口(API)來控制虛擬交換機。系統的架構如圖1所示。網絡節點使用消息服務進行檢查:如果主節點離線或發生故障,則由從節點將替換它。這確保了通過網絡節點的Internet接入不會被中斷。網絡管理員可以使用Web界面來評估網絡的狀態,如圖2所示。

圖1 系統架構

圖2 流量管理系統Web頁面
為了實現網絡功能的虛擬化,設計了一個網絡節點,用于控制虛擬交換機和計算網絡流量。網絡節點包括四個服務模塊。Open vSwitch服務模塊負責處理進入虛擬路由器的網絡流量,隨后OpenFlow控制器檢測網絡流量。當沒有檢測到問題時,允許流量通過Open vSwitch并轉移到物理網絡環境中的網關。測量服務的iptables過濾器用于計算網絡流量的字節數以及數據包是用于輸入還是輸出,然后將所有數據發送到第四個服務,即消息服務。每個統計數據項由消息服務根據高級消息隊列協議(AMQP)存儲在一個數據節點中。
數據節點用于處理從網絡節點收集的數據提供四種服務:Web服務、數據處理服務、消息服務和數據庫服務。數據處理服務用于格式化數據,消息服務負責處理AMQP中的數據。數據處理服務還用于檢測數據中的問題。當檢測到有問題的數據時,數據處理服務會通知管理Open vSwitch的OpenFlow控制器。OpenFlow控制器可以限制源數據流量以防止惡意入侵,并將處理后的數據發送到數據庫。這些數據將會顯示在Web界面中,數據處理服務是使用Python實現的。在這個過程中,必須頻繁地寫入和讀取數據。因此,使用NoSQL數據庫架構MongoDB。
使用OpenStack Neutron L3解決方案來備份網絡。使用的主要技術是虛擬路由器冗余協議 (VRRP)。兩個節點使用消息服務保持連接,每個節點都確保另一個節點處于活動狀態。當網絡流量進入時,首先由主節點進行評估。當消息服務節點無法檢測到對方時,網絡流量被轉移到從節點。使用VRRP可以保證用戶在使用網絡服務時服務不中斷。VRRP 解決方案的第一部分是在兩個節點之間創建一個虛擬路由器。主節點使用 Open vSwitch 創建虛擬路由器、高可用性(HA)網絡和 HA 端口。網絡代理構建接口和HA配置文件,然后向從節點發送消息。從節點獲取消息并設置與主節點相同的配置,然后保持與主節點的連接。VRRP解決方案的第二部分是讓從節點在主節點發生故障時替換主節點。當主節點中的虛擬路由器發生故障或離線時,網絡代理將消息發送到從節點。從節點根據配置文件啟動一個虛擬路由器。如果主節點中的網絡代理發生故障或離線,從節點無法檢測到主節點的連接時,會自動啟動虛擬路由器。
流量監控機制分為兩部分:實時監控功能和統計數據分析。實時監控功能與OpenFlow 控制器相結合,以管理進入系統的流量。流量數據的統計分析由NetFlow顯示。網絡管理員可以使用這些實時監控功能來檢測網絡行為異常和統計數據來分析網絡流量。
實現實時流量監控功能的一種方法是使用網絡命名空間。OpenFlow系統使用 ip netns命令創建網絡命名空間,以便命名空間從主機繼承配置。當命名空間用于創建虛擬路由器時,流量將進入特定的命名空間。命名空間在iptable過濾器中創建規則,如果傳入流量的源IP與規則匹配,則將收集此流量數據。收集到的數據會定期發送到數據節點供管理員分析。
統計數據分析的實現方式與實現實時流量監控功能類似。系統使用ip netns命令創建網絡命名空間和虛擬路由器。Open vSwitch支持NetFlow協議通過虛擬路由器收集所有數據包信息。該數據包信息將被轉換為 NetFlow 數據并發送到數據節點,該數據節點通過流捕獲的方式定期收集數據。
本系統中的網絡監控和流量測量是兩個重要的功能。為了便于網絡管理員對網絡進行管理,設置了一個限值K,以供實時流量監控時參考。當實時流量大于K時,OpenFlow控制器會對這個流量進行一些動作。
數據節點接收到實時數據后,對數據進行格式化。格式包括了最后更新時間、檢查時間、字節和數據包信息。對于統計分析,使用NetFlow數據格式,其格式包括源IP、目的IP、協議類型、源端口、目的端口、字節和數據包。
可以根據實時流量服務中的統計數據來設置K。例如,可以根據單日數據的統計來設置K。可以把單日統計數據看成一個正態分布,剔除異常值后,將K設置為其均值。K的計算過程如算法1所示。考慮了正態分布的68-95-99.7規則,即68.27%的數據分布在第一個標準差范圍內,95.45%的數據分布在第二個標準差范圍內,99.73%的數據分布在第三個標準差范圍內。

算法1 限制K計算輸入:統計數據X輸出:K值1.計算均值:;2.計算方差:;3.計算標準差: ;4.計算異常值:;5.For i = 1 to len(X)6. If On >= -3 and On <= 3 then 7. xi = 0;8. End if 9.End for 10.11.Return K;
為了幫助網絡管理員有效地管理網絡,設計了一個Web管理頁面。該網頁由實時流量狀態監控、統計數據查詢、虛擬路由器狀態三個功能組成。網頁管理頁面默認在索引頁面顯示實時流量數據,會自動加載當天采集的實時流量數據。根據配置設置,每分鐘將數據寫入數據庫。統計數據查詢頁面提供了一天內從NetFlow捕獲中收集的信息。每天上午12點將捕獲的數據發送到數據庫,這些數據可以通過這個查詢頁面進行查詢,在對所有數據進行排序后,會自動在該頁面顯示前20個來源IP。網絡管理員可以參考這些信息來自適應地設置監控系統的K值。路由器狀態頁面顯示路由器的狀態:指示哪個路由器提供網絡服務,并顯示其他路由器處于工作、待機或離線狀態。網絡管理員可以通過該頁面快速告知操作整個網絡的狀態。
實驗環境由三臺硬件規格相同的計算機組成:12核英特爾志強E-5645處理器、32 GB內存和1 GB網絡卡。使用Helium版本作為OpenFlow控制器,使用Open vSwitch 2.5.0版本,使用OpenStack Newton版本。Python的版本是3.5.1。在真實的網絡環境中構建了所提出的系統,該系統捕獲連接到互聯網的計算機的流量,實驗的拓撲架構如圖3所示。

圖3 實驗拓撲結構
使用網絡測試軟件iperf對虛擬路由器進行性能測量,實驗測試平臺由客戶端和服務器組成,客戶端發送大量數據包進行網絡壓力測試。實驗使用了TCP和UDP兩種協議。虛擬路由器和物理路由器的性能對比結果如圖4所示。由圖4(a)的結果可知,當數據包大小增加時,網絡速度會增加。最大速度出現在數據包大小為 2 048字節的情況下。由圖4(b)所示的實驗結果可知,最大速度出現在數據包大小為1 024字節的時候。當數據包大小增加到2 048字節時,物理和虛擬路由器的速度會減慢。

圖4 虛擬路由器和物理路由器的性能對比
實驗考察了不同寫入頻率下實時測量系統的準確性,結果如圖5所示。由結果可知,數據寫入頻率越高,準確度也越高。 但是,頻繁寫入數據庫可能會導致高流量負載。

圖5 寫入頻率與準確性和負載的關系
實驗使用iperf工具來測試網絡系統高可用性(HA)功能的響應時間。將主網絡節點停止,并觀察網絡流量的反應。圖6顯示了最佳和最差響應時間的實驗結果。由于當時主網絡節點關閉,網絡流量在第6秒的時候下降為0。在最佳情況下,網絡流量在9秒時達到正常值,這意味著網絡HA功能正常工作。

圖6 最佳和最差響應時間
本文基于網絡功能虛擬化技術來實現網絡流量監控系統,并將其性能與采用傳統硬件架構的系統進行比較。由實驗結果可知,本系統與傳統基于硬件架構的系統的性能相近,并大大降低了硬件成本,提高網絡管理任務的靈活性。后續的研究工作將在更廣泛的網絡環境中測試所提出的系統。