房海峰 趙亞嬋 檀蓉 韓院彬
摘? 要: SDN的出現(xiàn)開展了計算機虛擬網(wǎng)絡模式新的轉變,實現(xiàn)了將控制層面與數(shù)據(jù)轉發(fā)分離的功能。利用OpenFlow協(xié)議對控制器與交換機進行交流。針對網(wǎng)絡傳輸?shù)哪芎膯栴},提出虛擬網(wǎng)絡動態(tài)切換技術,在該系統(tǒng)中虛擬機之間通信有兩條路徑可供選擇,即光交換機和電交換機。通過對交換機的切換,實現(xiàn)虛擬網(wǎng)絡流量的整合,減少物理網(wǎng)絡資源的冗余浪費,從而達到優(yōu)化數(shù)據(jù)網(wǎng)絡能耗的目的。通過Ping與Netperf這兩個測試工具測出丟包率、延遲及流量值,這些數(shù)值的變化證明了所提系統(tǒng)可正常運行。
關鍵詞: 虛擬網(wǎng)絡; 動態(tài)切換; SDN環(huán)境; 流量整合; 系統(tǒng)設計; 系統(tǒng)測試
中圖分類號: 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? 引? 言
軟件定義網(wǎng)絡(Software Defined Network,SDN)是計算機網(wǎng)絡模式的一種新的架構,它實現(xiàn)了網(wǎng)絡結構的虛擬化。SDN的目的是將控制與轉發(fā)功能分離,控制器主要負責決策,而交換機只負責轉發(fā)。SDN架構分為三部分,即網(wǎng)絡應用、OpenFlow控制器和OpenFlow交換機??刂破魇褂玫氖荝YU,RYU是基于組件的SDN框架,支持OpenFlow,且采用Python實現(xiàn)。交換機使用的Open vSwitch具有可遷移性、對動態(tài)網(wǎng)絡作出響應、維持邏輯標簽和硬件集成等優(yōu)點,因此目前已被移植到多個虛擬化平臺上和交換機的芯片組中,成為很多平臺的默認交換機[1]。網(wǎng)絡應用和控制器通過北向接口通信,控制器和交換機則通過南向接口傳遞消息,即OpenFlow協(xié)議。
本文對在SDN環(huán)境下虛擬網(wǎng)絡切換技術進行了介紹,SDN采用數(shù)據(jù)平面與控制平面相分離的架構,控制器負責下發(fā)命令,在交換機之間傳遞消息。在本系統(tǒng)中,虛擬機傳輸數(shù)據(jù)設計了兩條路徑:一條為光交換機;另一條為電交換機。根據(jù)所設定的流量閾值區(qū)分大流量與小流量。當流量超過閾值時,選擇光交換機;小于閾值時,則選擇電交換機。
本系統(tǒng)實現(xiàn)了虛擬網(wǎng)絡路徑切換的功能,但是光交換機與電交換機各有優(yōu)缺點,故切換系統(tǒng)的實現(xiàn)大大減少了能源的損耗,提高了資源的利用率,同時可行性很高。
1? 相關工作
多路徑傳輸機制(OFMT)[2]通過對流計算路徑,將流量分到多個路徑上,同時通過周期輪詢及動態(tài)調(diào)度實現(xiàn)了均衡負載的目的,從而提高了網(wǎng)絡吞吐量并減少了傳輸時間。
文獻[3]是一篇技術性論文,之前的研究主要是針對延遲、吞吐量和包丟失等網(wǎng)絡性能。本文主要介紹了在SDN環(huán)境下OpenFlow協(xié)議的流量統(tǒng)計信息的收集特性,通過捕捉和分析控制器收集的請求信息和應答消息,計算其他流量工程的參數(shù)。
Opennetmon[4]是基于SDN的網(wǎng)絡監(jiān)控,監(jiān)控OpenFlow網(wǎng)絡中吞吐量、延遲和包丟失等流量指標的一種方法。OpenFlow提供TE接口,文章提出的方法提供監(jiān)控,支持細粒度流量工程。Opennetmon通過輪詢邊緣交換機測量流量,流量減少時,降低自適應率及切換CPU,同時提高了測量精度。
OpenTM[5]是用來測量網(wǎng)絡流量的矩陣系統(tǒng),此系統(tǒng)通過獲取的路由信息選擇交換機獲取流量。通過比較,發(fā)現(xiàn)OpenTM比OpenFlow協(xié)議提供的用于匹配和查詢交換機數(shù)量、字節(jié)的函數(shù)更精確。但是本系統(tǒng)對交換機的要求較高,需要挑選合適的交換機。
2? 相關技術
2.1? SDN
SDN起源于斯坦福大學在2006年的一個項目,該項目定義了新型的網(wǎng)絡架構。SDN的出現(xiàn)使控制與執(zhí)行轉發(fā)分離,簡化了網(wǎng)絡管理與控制。SDN將控制權交給了控制器,控制器下達指令,交換機只負責數(shù)據(jù)包的轉發(fā),兩者的分開使網(wǎng)絡更加智能,更具有靈活性。
SDN分為應用層、控制層和基礎設施層,如圖1所示。應用層與控制層使用網(wǎng)絡應用接口,即北向接口進行交互,控制層與基礎設施層使用南向接口進行通信,到目前為止,北向接口并沒有明確的定義,南向接口使用OpenFlow協(xié)議進行通信。SDN的網(wǎng)絡應用程序在應用層中運行,應用層通過北向接口告訴控制層自身對網(wǎng)絡資源的需求以及對網(wǎng)絡行為的需要,同時通過北向接口從控制器中讀取網(wǎng)絡的當前狀態(tài)與各種統(tǒng)計數(shù)據(jù)??刂茖邮荢DN架構中最關鍵的部分,控制器則在控制層上運行,控制層通過南向接口對基礎設施層發(fā)送指令,以達到控制的目的,通過北向接口對網(wǎng)絡行為及策略進行控制[6]。交換機在基礎設施層上運行,在本層可以進行數(shù)據(jù)交換與處理。
2.2? RYU
RYU[7]是基于組件的SDN控制器,由Python實現(xiàn),同時支持所有版本的OpenFlow協(xié)議,跟其他控制器相比,便于開發(fā)。
RYU架構與SDN架構相似,SDN APP分為三類,分別是Operator,OpenStack cloud orchestration和User Apps。RYU SDN frame work是RYU的框架層,主要是用于實現(xiàn)控制器流表下發(fā)、拓撲發(fā)現(xiàn)等功能。OpenFlow switch層包含交換機,支持OpenFlow協(xié)議。
2.3? OpenFlow
控制器與交換機之間通信靠的是OpenFlow協(xié)議,通過安全信道來傳遞消息。安全信道是將交換機與控制器連接到一塊的接口。當開啟了交換機后,會向控制器發(fā)起TLS(傳輸層安全)連接,控制器默認的TCP接口[1]為6633。
消息傳遞過程為:交換機收到數(shù)據(jù)包后,對包頭進行解析,然后進行查表,從流表的第一個記錄開始依次查詢,當發(fā)現(xiàn)有匹配的流記錄時,交換機執(zhí)行相應的動作,當沒有匹配的流記錄時,將數(shù)據(jù)包通過安全信道發(fā)送packet?in消息給控制器,控制器再給交換機發(fā)送packet?out消息來反饋相應的動作[8]。
2.4? Open vSwitch
OVS(Open vSwitch)是在開源Apache 2.0許可下授權且具有產(chǎn)品級質(zhì)量的多層虛擬交換機[9]。該交換機由Nicira Networks開發(fā),支持標準的網(wǎng)絡接口和協(xié)議,也支持通過編程擴展的大規(guī)模的網(wǎng)絡自動化。
Open vSwitch很適合在虛擬環(huán)境中運行,基本上是由C語言的獨立平臺編寫,適合很多環(huán)境,便于應用。在虛擬機中,交換機的作用是傳遞消息,以及與外部環(huán)境通信,接收并執(zhí)行控制器的命令。
3? 系統(tǒng)設計
本系統(tǒng)實現(xiàn)了兩個虛擬機在發(fā)送消息時切換路徑的技術。在傳輸消息時,會出現(xiàn)能耗高、傳輸慢,或者能源浪費的情況。所以當流量小時,為節(jié)省成本及時間,應選擇電交換機;當流量大時,為加快傳輸速率需要切換為光交換機。SDN交換機切換拓撲圖如圖2所示。
圖2中,KVM1與KVM2互相發(fā)送數(shù)據(jù),可以看到有兩條路徑,第一條是通過交換機1到光交換機的路徑,光通信速度比較快,但是成本較高,當傳輸?shù)臄?shù)據(jù)流量大于控制器設定的閾值[10]時,應采用光交換機來傳輸數(shù)據(jù),傳輸?shù)臄?shù)據(jù)也就是所謂的大象流[11]。當傳輸?shù)牧髁啃∮诳刂破髟O定的閾值時,應選用第二條路徑進行數(shù)據(jù)傳輸,也就是虛擬機1通過電交換機對虛擬機2進行數(shù)據(jù)傳送。此次傳輸?shù)臄?shù)據(jù)叫作老鼠流。根據(jù)流量傳輸選擇合適的路徑,可以減少能源及時間的浪費。
4? 系統(tǒng)實現(xiàn)
4.1? 系統(tǒng)運行過程
在系統(tǒng)運行之前,需要進行環(huán)境準備。SDN控制器啟動前應滿足以下條件:首先,應保證不啟動節(jié)點虛擬機,以防產(chǎn)生網(wǎng)絡流量;其次,虛擬交換機的流表的初始值應為零;最后,要確定物理網(wǎng)絡拓撲結構。
當啟動控制器后,根據(jù)物理網(wǎng)絡拓撲結構,進行配置。再啟動監(jiān)控線程,檢查端口的狀態(tài)信息,并將虛擬機信息、虛擬機交換機信息、端口信息、物理連接信息、流表連接信息、虛擬機通信路徑信息、虛擬機通信路徑中的流表配置計劃信息和vxlan點對物理通路流表配置信息記錄到數(shù)據(jù)庫中。開啟監(jiān)控后,檢查端口的狀態(tài)信息,實現(xiàn)vxlan路徑相關的流表的配置。根據(jù)流表的配置向指定通信路徑相關的虛擬交換機配置流表項,檢查是否存在導致環(huán)路的端口,將其禁用;再激活指定的通信路徑,向指定通信路徑中的入口端虛擬交換機配置CF流表項,便于捕獲異常包。啟動虛擬機后,正常運行,如圖3所示。
最后,進行兩個測試,即Ping和Netperf。測試完成后,在數(shù)據(jù)庫中導出數(shù)據(jù),進行分析。
4.2? 系統(tǒng)切換過程
在初始環(huán)境進行配置,使虛擬機在未啟動狀態(tài),流表為空。然后使SDN控制器啟動,再使SDN控制器啟動流量監(jiān)控[12]來獲取端口狀態(tài)信息,更新路徑信息和ARP信息。啟動虛擬機后SDN控制器啟動切換監(jiān)控,監(jiān)控器根據(jù)流量閾值判斷是否啟動了切換,若確定啟動切換,則需要重新尋找路徑,如:關閉路徑1?2,啟動路徑3?4,最后輸出路徑丟包信息完成路徑切換。
切換是本文最重要的部分,如何從1?2路徑切換到3?4路徑,再從3?4路徑切換到1?2路徑是關鍵的技術。
要想從1?2路徑切換到3?4路徑,需進行如下步驟:
1) 進行環(huán)境準備:before啟動控制器,節(jié)點虛擬機未啟動,虛擬交換機流表==0,確定物理網(wǎng)絡拓撲結構;
2) 輸入sudo ryu?manager haifeng_monitor_with_db_
and_websocket_2.py,開啟控制器;
3) 啟動KVM;
4) 啟動切換監(jiān)控查看流量值;
5) When need_switch==ok deactive_path_number=path?(1,2) 沿著path?1?2路徑中的datapath下發(fā)c?flow,刪除原有的flow;沿著path?1路徑中的datapath刪除路徑中間的vxlan流表和ARP信息再禁用端點處datapath中的port;
6) If SDN控制器捕獲到流量包pkt,切換到3?4,即:配置路徑中間的vxlan流表和ARP信息,再向路徑中間的datapath下發(fā)flow,刪除路徑中間的datapath的c?flow,啟用端點處datapath中的port,path?3向源端點處datapath下發(fā)flow并向目端點處datapath下發(fā)flow,path?4向源端點處datapath下發(fā)flow并向目端點處datapath下發(fā)flow,Else return 1;
7) If? KVM可以運行,切換完成,Else? return 1,從path 3?4切換回path 1?2的過程與上述一致。
5? 評? 估
5.1? 準備測試環(huán)境
本系統(tǒng)測試前需要準備測試環(huán)境,將Node?1?KVM和Node?2?KVM鏡像備份,再將虛擬機進行快照準備,運行RYU控制器,將Node?1和Node?2中的Open vSwitch恢復到初始狀態(tài)。最后對測試前的環(huán)境檢查:確定控制器中安裝了切換程序;網(wǎng)絡拓撲已配置且端口全部啟動。
5.2? 開始測試新的KVM的運行情況
啟動Node?1和Node?2,殺死當前運行的KVM,再啟用新的KVM。再由Node?1和Node?2分別啟動KVM1和KVM2,且每次測試時都需要重新啟動KVM。啟動控制器,上傳RYU,再啟動RYU。分別進入KVM1和KVM2,并運行兩個網(wǎng)絡測試工具,即Ping和Netperf。最后啟動測試程序,發(fā)起任務。測試結束后將數(shù)據(jù)從數(shù)據(jù)庫中導出。
5.3? 測? 試
在測試前,需要在測試界面進行相應的配置。根據(jù)測試計劃,對本次測試進行相關的描述,在“Test Tools”選擇Ping測試或者Netperf測試,填入測試總時間以及總字節(jié),最后選擇隨機切換還是固定切換,填入切換的次數(shù),測試配置界面如圖4所示。
5.3.1? Ping測試
Ping是一個通信協(xié)議,主要是用來測試兩個客戶端之間網(wǎng)絡是否連通[13]。在默認情況下,Ping測試默認包為64個字節(jié)。Ping測試格式為:Ping+空格+IP地址。
在Ping測試時需要配置IP地址,關閉KVM1和KVM2的防火墻。當進行Ping測試時,根據(jù)需要,再調(diào)整參數(shù)。圖5證明KVM1與KVM2 Ping測試成功。
5.3.2? Netperf測試
Netperf是針對TCP/UDP協(xié)議的測試網(wǎng)絡性能的工具。Netperf的測試結果展示了一個系統(tǒng)向另一個系統(tǒng)發(fā)送數(shù)據(jù),第一個系統(tǒng)可以以多快的速度傳輸數(shù)據(jù),以及另一個系統(tǒng)可以以多快的速度接收數(shù)據(jù)[14]。Netperf的5種工作模式分別為TCP_STREAM,TCP_RR,UDP_STREAM,UDP_RR,TCP_CRR。
Netperf測試時需關閉防火墻再進行測試,在KVM1(2)輸入“netserver”開啟服務器,在KVM2(1)中進行Netperf測試,如圖6所示,Netperf測試成功。
6? 結? 論
本文介紹了在SDN環(huán)境下的虛擬網(wǎng)絡的動態(tài)切換技術,系統(tǒng)路徑分為兩種,兩條路徑分別通過光交換機和電交換機??刂破鲉雍蟊O(jiān)控流量,獲取當前路徑信息,SDN監(jiān)控器根據(jù)流量閾值判斷是否啟動切換。本系統(tǒng)的出現(xiàn)使虛擬機在傳輸數(shù)據(jù)時大大減少了能源的損耗,并且用戶在高流量的訪問過程中,可快速訪問網(wǎng)頁。本系統(tǒng)目前僅僅實現(xiàn)了路徑切換,下一步計劃通過測試所得的數(shù)據(jù)建立預測模型,優(yōu)化系統(tǒng)。
注:本文通訊作者為趙亞嬋。
參考文獻
[1] SIAMAK Azodolmolky.軟件定義網(wǎng)絡:基于OpenFlow的SDN技術揭秘[M].徐磊,譯.北京:機械工業(yè)出版社,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.軟件定義網(wǎng)絡:SDN與OpenFlow解析[M].畢軍,單業(yè),張紹宇,等譯.北京:人民郵電出版社,2014.
[7] 傅妍芳,李敬偉,馬靜,等.基于Ryu的SDN網(wǎng)絡動態(tài)路由算法實現(xiàn)[J].西安工業(yè)大學學報,2018,38(3):279?285.
[8] 晃通,宮永直樹,巖田淳.圖解OpenFlow[M].李戰(zhàn)軍,薛文玲,譯.北京:人民郵電出版社,2016.
[9] 湯中運,金蓉,李傳煌.支持SDN的高校計算機網(wǎng)絡實驗室設計與實現(xiàn)[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] 常莉.計算機網(wǎng)絡中Ping命令的應用[J].科技風,2009(18):207.
[14] 林梅琴,李志蜀,陳黎,等.Netperf的工作原理及應用[J].四川大學學報(自然科學版),2006(2):310?314.