房海峰 趙亞嬋 檀蓉 韓院彬



摘? 要: SDN的出現開展了計算機虛擬網絡模式新的轉變,實現了將控制層面與數據轉發分離的功能。利用OpenFlow協議對控制器與交換機進行交流。針對網絡傳輸的能耗問題,提出虛擬網絡動態切換技術,在該系統中虛擬機之間通信有兩條路徑可供選擇,即光交換機和電交換機。通過對交換機的切換,實現虛擬網絡流量的整合,減少物理網絡資源的冗余浪費,從而達到優化數據網絡能耗的目的。通過Ping與Netperf這兩個測試工具測出丟包率、延遲及流量值,這些數值的變化證明了所提系統可正常運行。
關鍵詞: 虛擬網絡; 動態切換; SDN環境; 流量整合; 系統設計; 系統測試
中圖分類號: TN915?34; TP393? ? ? ? ? ? ? ? ? 文獻標識碼: A? ? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2020)06?0061?04
Dynamic switching technology of virtual network in SDN environment
FANG Haifeng, ZHAO Yachan, TAN Rong, HAN Yuanbin
(School of Information and Electrical Engineering, Hebei University of Engineering, Handan 056038, China)
Abstract: The emergence of SDN has carried out a new transformation of computer virtual network mode and realized the function of separating control level from data forwarding. The OpenFlow protocol supports the communication of the controller and the switch. In allusion to the energy consumption of network transmission, a virtual network dynamic switching technology is proposed. In this system, there are two paths for communication between virtual machines, namely optical switch and electrical switch. By switching the switch, the integration of virtual network traffic is realized, and the redundancy and waste of physical network resources are reduced, so as to optimize the energy consumption of data network. Ping and Netperf are the system′s test tools, by which the packet loss rates, latency, and traffic value are measured. It proves that the proposed system can run normally.
Keywords: virtual network; dynamic switching; SDN environment; OpenFlow; traffic integration; system design; system test
0? 引? 言
軟件定義網絡(Software Defined Network,SDN)是計算機網絡模式的一種新的架構,它實現了網絡結構的虛擬化。SDN的目的是將控制與轉發功能分離,控制器主要負責決策,而交換機只負責轉發。SDN架構分為三部分,即網絡應用、OpenFlow控制器和OpenFlow交換機。控制器使用的是RYU,RYU是基于組件的SDN框架,支持OpenFlow,且采用Python實現。交換機使用的Open vSwitch具有可遷移性、對動態網絡作出響應、維持邏輯標簽和硬件集成等優點,因此目前已被移植到多個虛擬化平臺上和交換機的芯片組中,成為很多平臺的默認交換機[1]。網絡應用和控制器通過北向接口通信,控制器和交換機則通過南向接口傳遞消息,即OpenFlow協議。
本文對在SDN環境下虛擬網絡切換技術進行了介紹,SDN采用數據平面與控制平面相分離的架構,控制器負責下發命令,在交換機之間傳遞消息。在本系統中,虛擬機傳輸數據設計了兩條路徑:一條為光交換機;另一條為電交換機。根據所設定的流量閾值區分大流量與小流量。當流量超過閾值時,選擇光交換機;小于閾值時,則選擇電交換機。
本系統實現了虛擬網絡路徑切換的功能,但是光交換機與電交換機各有優缺點,故切換系統的實現大大減少了能源的損耗,提高了資源的利用率,同時可行性很高。
1? 相關工作
多路徑傳輸機制(OFMT)[2]通過對流計算路徑,將流量分到多個路徑上,同時通過周期輪詢及動態調度實現了均衡負載的目的,從而提高了網絡吞吐量并減少了傳輸時間。
文獻[3]是一篇技術性論文,之前的研究主要是針對延遲、吞吐量和包丟失等網絡性能。本文主要介紹了在SDN環境下OpenFlow協議的流量統計信息的收集特性,通過捕捉和分析控制器收集的請求信息和應答消息,計算其他流量工程的參數。
Opennetmon[4]是基于SDN的網絡監控,監控OpenFlow網絡中吞吐量、延遲和包丟失等流量指標的一種方法。OpenFlow提供TE接口,文章提出的方法提供監控,支持細粒度流量工程。Opennetmon通過輪詢邊緣交換機測量流量,流量減少時,降低自適應率及切換CPU,同時提高了測量精度。
OpenTM[5]是用來測量網絡流量的矩陣系統,此系統通過獲取的路由信息選擇交換機獲取流量。通過比較,發現OpenTM比OpenFlow協議提供的用于匹配和查詢交換機數量、字節的函數更精確。但是本系統對交換機的要求較高,需要挑選合適的交換機。
2? 相關技術
2.1? SDN
SDN起源于斯坦福大學在2006年的一個項目,該項目定義了新型的網絡架構。SDN的出現使控制與執行轉發分離,簡化了網絡管理與控制。SDN將控制權交給了控制器,控制器下達指令,交換機只負責數據包的轉發,兩者的分開使網絡更加智能,更具有靈活性。
SDN分為應用層、控制層和基礎設施層,如圖1所示。應用層與控制層使用網絡應用接口,即北向接口進行交互,控制層與基礎設施層使用南向接口進行通信,到目前為止,北向接口并沒有明確的定義,南向接口使用OpenFlow協議進行通信。SDN的網絡應用程序在應用層中運行,應用層通過北向接口告訴控制層自身對網絡資源的需求以及對網絡行為的需要,同時通過北向接口從控制器中讀取網絡的當前狀態與各種統計數據。控制層是SDN架構中最關鍵的部分,控制器則在控制層上運行,控制層通過南向接口對基礎設施層發送指令,以達到控制的目的,通過北向接口對網絡行為及策略進行控制[6]。交換機在基礎設施層上運行,在本層可以進行數據交換與處理。
2.2? RYU
RYU[7]是基于組件的SDN控制器,由Python實現,同時支持所有版本的OpenFlow協議,跟其他控制器相比,便于開發。
RYU架構與SDN架構相似,SDN APP分為三類,分別是Operator,OpenStack cloud orchestration和User Apps。RYU SDN frame work是RYU的框架層,主要是用于實現控制器流表下發、拓撲發現等功能。OpenFlow switch層包含交換機,支持OpenFlow協議。
2.3? OpenFlow
控制器與交換機之間通信靠的是OpenFlow協議,通過安全信道來傳遞消息。安全信道是將交換機與控制器連接到一塊的接口。當開啟了交換機后,會向控制器發起TLS(傳輸層安全)連接,控制器默認的TCP接口[1]為6633。
消息傳遞過程為:交換機收到數據包后,對包頭進行解析,然后進行查表,從流表的第一個記錄開始依次查詢,當發現有匹配的流記錄時,交換機執行相應的動作,當沒有匹配的流記錄時,將數據包通過安全信道發送packet?in消息給控制器,控制器再給交換機發送packet?out消息來反饋相應的動作[8]。
2.4? Open vSwitch
OVS(Open vSwitch)是在開源Apache 2.0許可下授權且具有產品級質量的多層虛擬交換機[9]。該交換機由Nicira Networks開發,支持標準的網絡接口和協議,也支持通過編程擴展的大規模的網絡自動化。
Open vSwitch很適合在虛擬環境中運行,基本上是由C語言的獨立平臺編寫,適合很多環境,便于應用。在虛擬機中,交換機的作用是傳遞消息,以及與外部環境通信,接收并執行控制器的命令。
3? 系統設計
本系統實現了兩個虛擬機在發送消息時切換路徑的技術。在傳輸消息時,會出現能耗高、傳輸慢,或者能源浪費的情況。所以當流量小時,為節省成本及時間,應選擇電交換機;當流量大時,為加快傳輸速率需要切換為光交換機。SDN交換機切換拓撲圖如圖2所示。
圖2中,KVM1與KVM2互相發送數據,可以看到有兩條路徑,第一條是通過交換機1到光交換機的路徑,光通信速度比較快,但是成本較高,當傳輸的數據流量大于控制器設定的閾值[10]時,應采用光交換機來傳輸數據,傳輸的數據也就是所謂的大象流[11]。當傳輸的流量小于控制器設定的閾值時,應選用第二條路徑進行數據傳輸,也就是虛擬機1通過電交換機對虛擬機2進行數據傳送。此次傳輸的數據叫作老鼠流。根據流量傳輸選擇合適的路徑,可以減少能源及時間的浪費。
4? 系統實現
4.1? 系統運行過程
在系統運行之前,需要進行環境準備。SDN控制器啟動前應滿足以下條件:首先,應保證不啟動節點虛擬機,以防產生網絡流量;其次,虛擬交換機的流表的初始值應為零;最后,要確定物理網絡拓撲結構。
當啟動控制器后,根據物理網絡拓撲結構,進行配置。再啟動監控線程,檢查端口的狀態信息,并將虛擬機信息、虛擬機交換機信息、端口信息、物理連接信息、流表連接信息、虛擬機通信路徑信息、虛擬機通信路徑中的流表配置計劃信息和vxlan點對物理通路流表配置信息記錄到數據庫中。開啟監控后,檢查端口的狀態信息,實現vxlan路徑相關的流表的配置。根據流表的配置向指定通信路徑相關的虛擬交換機配置流表項,檢查是否存在導致環路的端口,將其禁用;再激活指定的通信路徑,向指定通信路徑中的入口端虛擬交換機配置CF流表項,便于捕獲異常包。啟動虛擬機后,正常運行,如圖3所示。
最后,進行兩個測試,即Ping和Netperf。測試完成后,在數據庫中導出數據,進行分析。
4.2? 系統切換過程
在初始環境進行配置,使虛擬機在未啟動狀態,流表為空。然后使SDN控制器啟動,再使SDN控制器啟動流量監控[12]來獲取端口狀態信息,更新路徑信息和ARP信息。啟動虛擬機后SDN控制器啟動切換監控,監控器根據流量閾值判斷是否啟動了切換,若確定啟動切換,則需要重新尋找路徑,如:關閉路徑1?2,啟動路徑3?4,最后輸出路徑丟包信息完成路徑切換。
切換是本文最重要的部分,如何從1?2路徑切換到3?4路徑,再從3?4路徑切換到1?2路徑是關鍵的技術。
要想從1?2路徑切換到3?4路徑,需進行如下步驟:
1) 進行環境準備:before啟動控制器,節點虛擬機未啟動,虛擬交換機流表==0,確定物理網絡拓撲結構;
2) 輸入sudo ryu?manager haifeng_monitor_with_db_
and_websocket_2.py,開啟控制器;
3) 啟動KVM;
4) 啟動切換監控查看流量值;
5) When need_switch==ok deactive_path_number=path?(1,2) 沿著path?1?2路徑中的datapath下發c?flow,刪除原有的flow;沿著path?1路徑中的datapath刪除路徑中間的vxlan流表和ARP信息再禁用端點處datapath中的port;
6) If SDN控制器捕獲到流量包pkt,切換到3?4,即:配置路徑中間的vxlan流表和ARP信息,再向路徑中間的datapath下發flow,刪除路徑中間的datapath的c?flow,啟用端點處datapath中的port,path?3向源端點處datapath下發flow并向目端點處datapath下發flow,path?4向源端點處datapath下發flow并向目端點處datapath下發flow,Else return 1;
7) If? KVM可以運行,切換完成,Else? return 1,從path 3?4切換回path 1?2的過程與上述一致。
5? 評? 估
5.1? 準備測試環境
本系統測試前需要準備測試環境,將Node?1?KVM和Node?2?KVM鏡像備份,再將虛擬機進行快照準備,運行RYU控制器,將Node?1和Node?2中的Open vSwitch恢復到初始狀態。最后對測試前的環境檢查:確定控制器中安裝了切換程序;網絡拓撲已配置且端口全部啟動。
5.2? 開始測試新的KVM的運行情況
啟動Node?1和Node?2,殺死當前運行的KVM,再啟用新的KVM。再由Node?1和Node?2分別啟動KVM1和KVM2,且每次測試時都需要重新啟動KVM。啟動控制器,上傳RYU,再啟動RYU。分別進入KVM1和KVM2,并運行兩個網絡測試工具,即Ping和Netperf。最后啟動測試程序,發起任務。測試結束后將數據從數據庫中導出。
5.3? 測? 試
在測試前,需要在測試界面進行相應的配置。根據測試計劃,對本次測試進行相關的描述,在“Test Tools”選擇Ping測試或者Netperf測試,填入測試總時間以及總字節,最后選擇隨機切換還是固定切換,填入切換的次數,測試配置界面如圖4所示。
5.3.1? Ping測試
Ping是一個通信協議,主要是用來測試兩個客戶端之間網絡是否連通[13]。在默認情況下,Ping測試默認包為64個字節。Ping測試格式為:Ping+空格+IP地址。
在Ping測試時需要配置IP地址,關閉KVM1和KVM2的防火墻。當進行Ping測試時,根據需要,再調整參數。圖5證明KVM1與KVM2 Ping測試成功。
5.3.2? Netperf測試
Netperf是針對TCP/UDP協議的測試網絡性能的工具。Netperf的測試結果展示了一個系統向另一個系統發送數據,第一個系統可以以多快的速度傳輸數據,以及另一個系統可以以多快的速度接收數據[14]。Netperf的5種工作模式分別為TCP_STREAM,TCP_RR,UDP_STREAM,UDP_RR,TCP_CRR。
Netperf測試時需關閉防火墻再進行測試,在KVM1(2)輸入“netserver”開啟服務器,在KVM2(1)中進行Netperf測試,如圖6所示,Netperf測試成功。
6? 結? 論
本文介紹了在SDN環境下的虛擬網絡的動態切換技術,系統路徑分為兩種,兩條路徑分別通過光交換機和電交換機。控制器啟動后監控流量,獲取當前路徑信息,SDN監控器根據流量閾值判斷是否啟動切換。本系統的出現使虛擬機在傳輸數據時大大減少了能源的損耗,并且用戶在高流量的訪問過程中,可快速訪問網頁。本系統目前僅僅實現了路徑切換,下一步計劃通過測試所得的數據建立預測模型,優化系統。
注:本文通訊作者為趙亞嬋。
參考文獻
[1] SIAMAK Azodolmolky.軟件定義網絡:基于OpenFlow的SDN技術揭秘[M].徐磊,譯.北京:機械工業出版社,2014.
[2] 陳鳴,胡慧,劉波,等.一種基于OpenFlow的多路徑傳輸機制[J].電子與信息學報,2016,38(5):1242?1248.
[3] HAMAD D J, YALDA K G, OKUMUS I T. Getting traffic statistics from network devices in an SDN environment using OpenFlow [J]. International institute for Tibetan and Asian studies, 2015(16): 951?956.
[4] ADRICHEM N L M V, DOERR C, KUIPERS F A. OpenNetMon: network monitoring in OpenFlow software?defined networks [C]// 2014 IEEE Network Operations and Management Symposium. Krakow: IEEE, 2014: 1?8.
[5] AMIN Tootoonchian, MONIA Ghobadi, YASHAR Ganjali. OpenTM: traffic matrix estimator for OpenFlow networks [C]// International Conference on Passive and Active Network Measurement. Zurich: Springer, 2010: 201?210.
[6] TBOMAS D Nadeau, KEN Gery.軟件定義網絡:SDN與OpenFlow解析[M].畢軍,單業,張紹宇,等譯.北京:人民郵電出版社,2014.
[7] 傅妍芳,李敬偉,馬靜,等.基于Ryu的SDN網絡動態路由算法實現[J].西安工業大學學報,2018,38(3):279?285.
[8] 晃通,宮永直樹,巖田淳.圖解OpenFlow[M].李戰軍,薛文玲,譯.北京:人民郵電出版社,2016.
[9] 湯中運,金蓉,李傳煌.支持SDN的高校計算機網絡實驗室設計與實現[J].計算機應用與軟件,2018,35(9):189?194.
[10] 左青云,陳鳴,王秀磊,等.一種基于SDN的在線流量異常檢測方法[J].西安電子科技大學學報,2015,42(1):155?160.
[11] AFEK Y, BREMLER?BARR A, FEIBISH S L, et al. Detecting heavy flows in the sdn match and action model [J]. Computer networks, 2017(14): 136.
[12] LI D Y, DAI N Y, LI F, et al. Estimating SDN traffic matrix based on online informative flow measurement method [C]// 2017 Fifth International Conference on Advanced Cloud and Big Data. Shanghai: IEEE, 2017: 75?80.
[13] 常莉.計算機網絡中Ping命令的應用[J].科技風,2009(18):207.
[14] 林梅琴,李志蜀,陳黎,等.Netperf的工作原理及應用[J].四川大學學報(自然科學版),2006(2):310?314.