(黑龍江科技大學(xué) 計算機與信息工程學(xué)院,黑龍江 哈爾濱 150022)
目前,國內(nèi)外高校的網(wǎng)絡(luò)實驗主要采用真實網(wǎng)絡(luò)硬件和模擬器軟件2 種方式.采用真實網(wǎng)絡(luò)硬件,存在網(wǎng)絡(luò)設(shè)備資源不足、網(wǎng)絡(luò)攻防演練會對網(wǎng)絡(luò)設(shè)備造成危害等問題;采用NS3,Packet Tracer,Boson NetSim等模擬器軟件,存在實驗結(jié)果不能在真實網(wǎng)絡(luò)中驗證、無法進行可編程操作等問題[1-4].因此,研究一種在現(xiàn)有實驗室條件下能夠提供測試保真性的網(wǎng)絡(luò)實驗環(huán)境,具有重要的理論意義和實用價值.
基于SDN 的虛擬化技術(shù)為網(wǎng)絡(luò)實驗教學(xué)的開展提供了新的思路,在SDN 網(wǎng)絡(luò)中支持用戶定義自己的虛擬網(wǎng)絡(luò)、網(wǎng)絡(luò)規(guī)則和控制策略.目前,國內(nèi)不少院校在虛擬化實驗平臺方面也做了許多有益的探索與嘗試,清華大學(xué)自主研發(fā)了虛擬化網(wǎng)絡(luò)實驗平臺TUNIE,華東理工大學(xué)提出了一個基于OpenStack 云計算框架的創(chuàng)新實驗平臺,南京航空航天大學(xué)設(shè)計了基于網(wǎng)絡(luò)功能虛擬化NFV 的網(wǎng)絡(luò)試驗平臺[5-8].但這些研究多偏向于網(wǎng)絡(luò)功能測試和網(wǎng)絡(luò)設(shè)備資源管理,對虛擬化技術(shù)應(yīng)用于計算機網(wǎng)絡(luò)課程實驗教學(xué)的研究還比較少.
本文提出基于Mininet 的網(wǎng)絡(luò)實驗環(huán)境,使用虛擬化技術(shù)將物理資源轉(zhuǎn)換為虛擬資源,解決了采用真實網(wǎng)絡(luò)硬件和模擬器軟件進行實驗教學(xué)存在的問題,并為高校計算機網(wǎng)絡(luò)課程創(chuàng)新實驗教學(xué)提供有效支撐.
虛擬化技術(shù)可以將物理硬件資源實體克隆出多個虛擬硬件資源,這些虛擬硬件資源與真實硬件資源完全一樣,每一臺虛擬機都如同真實主機,支持多種功能服務(wù).Mininet 是一套進程虛擬化的網(wǎng)絡(luò)仿真平臺,可以構(gòu)建出任意結(jié)構(gòu)的大規(guī)模虛擬網(wǎng)絡(luò),新的服務(wù)、應(yīng)用和協(xié)議都可以在這個虛擬網(wǎng)絡(luò)中進行開發(fā)和驗證[9-10].在Mininet 中構(gòu)建虛擬網(wǎng)絡(luò),可以實現(xiàn)在同一臺計算機中虛擬出一個完整的網(wǎng)絡(luò),包括控制器、路由器、交換機以及主機,其中控制器可以控制虛擬化環(huán)境中的所有網(wǎng)絡(luò)資源,真實設(shè)備與虛擬節(jié)點之間構(gòu)成一個有層次的網(wǎng)絡(luò),這樣的網(wǎng)絡(luò)完全滿足計算機網(wǎng)絡(luò)實驗教學(xué)的需求.
實驗環(huán)境以Mininet 作為底層框架,以虛擬化技術(shù)作為技術(shù)支撐搭建一個虛擬網(wǎng)絡(luò)實驗環(huán)境,實驗環(huán)境總體架構(gòu)由物理資源層、虛擬化資源層和拓撲管理層3 層構(gòu)成(見圖1).
圖1 實驗環(huán)境總體架構(gòu)
1.1.1 物理資源層 物理資源層提供了實驗環(huán)境依賴的底層資源Mininet 平臺.Mininet 中可以虛擬出網(wǎng)絡(luò)拓撲中的虛擬節(jié)點和虛擬鏈路,可以在一臺主機上構(gòu)建虛擬網(wǎng)絡(luò),也可以在每個主機中構(gòu)建一個虛擬子網(wǎng),通過真實交換機連接多個Mininet,實現(xiàn)子網(wǎng)連接,提高網(wǎng)絡(luò)規(guī)模性和真實性.
1.1.2 虛擬化資源層 虛擬化是網(wǎng)絡(luò)實驗環(huán)境的核心技術(shù),包含存儲虛擬化和計算虛擬化.存儲虛擬化采用Ceph 分布式文件系統(tǒng)技術(shù),有效整合物理資源服務(wù)器的存儲能力;計算虛擬化采用Linux 系統(tǒng)下開源的KVM 技術(shù)來實現(xiàn)[11].
1.1.3 拓撲管理層 用戶只需要描述虛擬網(wǎng)絡(luò)組件就可以定制出特定的網(wǎng)絡(luò)實驗環(huán)境.這些虛擬網(wǎng)絡(luò)組件包括:虛擬機組件,支持多IP 地址集合的虛擬機;虛擬網(wǎng)絡(luò)設(shè)備組件,支持組網(wǎng)功能的網(wǎng)絡(luò)設(shè)備;虛擬防御實體組件,支持多種防御行為的網(wǎng)絡(luò)防御設(shè)備;控制器組件,支持多種類型的控制器等.拓撲管理層主要接收用戶的虛擬網(wǎng)絡(luò)拓撲描述數(shù)據(jù),并對輸入的拓撲描述進行存儲和子網(wǎng)劃分,通過Mininet 提供的Python API 構(gòu)建用戶需求的虛擬網(wǎng)絡(luò)拓撲[12].
利用Mininet 平臺自主構(gòu)建虛擬網(wǎng)絡(luò),虛擬網(wǎng)絡(luò)中可以真實地進行各種復(fù)雜的網(wǎng)絡(luò)配置,滿足了網(wǎng)絡(luò)實驗的需求.其次,Mininet 中提供了操作系統(tǒng)鏡像上傳、控制器集中管理、虛擬主機和設(shè)備創(chuàng)建刪除等便利操作,有利于實驗環(huán)境的恢復(fù)和網(wǎng)絡(luò)資源的循環(huán)利用[13].
基于Mininet 的虛擬網(wǎng)絡(luò)部署十分靈活,可以搭建在單節(jié)點服務(wù)器上,也可以搭建在大型集群服務(wù)器上[14-15].根據(jù)高校實驗室實際網(wǎng)絡(luò)硬件資源情況,可以將Mininet 搭建在2 個節(jié)點上,其中一個節(jié)點為存儲節(jié)點,負責存儲網(wǎng)絡(luò)實驗所需的各類鏡像文件,以及為網(wǎng)絡(luò)攻防實驗提供的靶場資源;另一個節(jié)點為計算節(jié)點,負責收集拓撲描述數(shù)據(jù)、計算子網(wǎng)劃分和節(jié)點管理.環(huán)境部署拓撲結(jié)構(gòu)見圖2.
圖2 環(huán)境部署
在實驗中,經(jīng)常需要建立大規(guī)模的網(wǎng)絡(luò)結(jié)構(gòu),可以通過Python 代碼創(chuàng)建虛擬網(wǎng)絡(luò)拓撲.因此,需要研究形式化描述虛擬網(wǎng)絡(luò)拓撲的方法,根據(jù)該方法,可以唯一、準確地對虛擬網(wǎng)絡(luò)拓撲中各個節(jié)點和鏈路的網(wǎng)絡(luò)配置進行描述,進而根據(jù)描述文件來實現(xiàn)虛擬網(wǎng)絡(luò)的構(gòu)建和配置.研究形式化描述虛擬網(wǎng)絡(luò)拓撲,首先分析虛擬網(wǎng)絡(luò)拓撲的組分,設(shè)計一種虛擬網(wǎng)絡(luò)拓撲描述語言VNTDL,將虛擬網(wǎng)絡(luò)拓撲的組分用語言描述出來,并給出其BNF 范式.
虛擬網(wǎng)絡(luò)拓撲的組分主要包括虛擬節(jié)點與虛擬鏈路.虛擬節(jié)點包括虛擬機、虛擬網(wǎng)絡(luò)設(shè)備、虛擬防御實體、控制器和域;虛擬鏈路類型包括鏈路劃分、鏈路串聯(lián)和鏈路聚合等.
VNTDL 語法主要用來描述虛擬網(wǎng)絡(luò)拓撲定義部分.虛擬網(wǎng)絡(luò)拓撲表達式是虛擬網(wǎng)絡(luò)拓撲的集合,虛擬網(wǎng)絡(luò)拓撲包括拓撲聲明語句和拓撲描述;拓撲描述包括實體描述和實體關(guān)系描述.虛擬網(wǎng)絡(luò)拓撲的BNF范式:
實體描述是一個描述各類虛擬節(jié)點的集合.實體可以是虛擬機、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)安全防御實體、控制器或者是域.
實體關(guān)系描述是一個描述虛擬鏈路的集合.
通過測量數(shù)據(jù)傳輸路徑損耗率實驗對提出的虛擬化教學(xué)方案進行展示.本實驗網(wǎng)絡(luò)拓撲見圖3.網(wǎng)絡(luò)中2 臺交換機s1和s2與2 臺Windows 主機h1和h2相連,2 臺交換機的一個端口分別與主機的一個物理接口相連,即s1端口1 與h1的eh1接口相連,s2端口1 與h2的eh1接口相連,同時,net1網(wǎng)絡(luò)由控制器c1進行遠程操控.
為了測量數(shù)據(jù)傳輸路徑損耗率,需要完成的工作:
(1)通過虛擬網(wǎng)絡(luò)拓撲描述語言生成網(wǎng)絡(luò)拓撲腳本,構(gòu)建實驗網(wǎng)絡(luò)拓撲.
圖3 實驗網(wǎng)絡(luò)拓撲
(2)使用Python 編寫Mininet 腳本,實現(xiàn)控制器c1向s1和s2發(fā)送flow_starts_request,當控制器收到s1和s2的response 時,分別將特定流的數(shù)據(jù)包數(shù)保存在input_pkts 和output_pkts 中,兩者的差值則為丟失的數(shù)據(jù)包數(shù)量.
(3)在Mininet 網(wǎng)絡(luò)中執(zhí)行ping 命令,讓主機互相通信,通過統(tǒng)計丟失的數(shù)據(jù)包數(shù)量得出損耗率.實驗結(jié)果見圖4,可以得出數(shù)據(jù)傳輸路徑的平均損耗率為5%左右.
圖4 實驗結(jié)果
實驗中,共測試3 次數(shù)據(jù)傳輸損耗率,3 次流量監(jiān)測得到的損耗率變化的曲線見圖5.這3 條流量損耗率曲線分別表示第1,2,3 次執(zhí)行ping 命令時20 個數(shù)據(jù)包流量損耗率的情況.
通過測量數(shù)據(jù)傳輸路徑損耗率的實驗過程可以看出,這種通過網(wǎng)絡(luò)流量監(jiān)控獲得路徑損耗率的實驗,在真實的網(wǎng)絡(luò)環(huán)境中是無法實現(xiàn)的,而在虛擬化實驗環(huán)境中,學(xué)生可以在Mininet 中構(gòu)建SDN 網(wǎng)絡(luò),通過在控制器上編寫程序較容易地完成損耗率測量并得出準確結(jié)果.
圖5 數(shù)據(jù)傳輸損耗率變化曲線
采用真實硬件和模擬器軟件的方式都無法滿足計算機網(wǎng)絡(luò)課程實驗的實際需求.本文提出了虛擬化網(wǎng)絡(luò)實驗教學(xué)方案,實現(xiàn)了自定義拓撲、構(gòu)建虛擬網(wǎng)絡(luò)、控制器集中管控網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)流量監(jiān)測等功能,并以“測量數(shù)據(jù)傳輸路徑損耗率”實驗為例,展示了基于Mininet 平臺進行網(wǎng)絡(luò)實驗的保真性、兼容性和可編程性.虛擬化技術(shù)的有效應(yīng)用,為高校的計算機網(wǎng)絡(luò)實驗提供了很好的實驗環(huán)境.