(黑龍江科技大學 計算機與信息工程學院,黑龍江 哈爾濱 150022)
目前,國內外高校的網絡實驗主要采用真實網絡硬件和模擬器軟件2 種方式.采用真實網絡硬件,存在網絡設備資源不足、網絡攻防演練會對網絡設備造成危害等問題;采用NS3,Packet Tracer,Boson NetSim等模擬器軟件,存在實驗結果不能在真實網絡中驗證、無法進行可編程操作等問題[1-4].因此,研究一種在現有實驗室條件下能夠提供測試保真性的網絡實驗環境,具有重要的理論意義和實用價值.
基于SDN 的虛擬化技術為網絡實驗教學的開展提供了新的思路,在SDN 網絡中支持用戶定義自己的虛擬網絡、網絡規則和控制策略.目前,國內不少院校在虛擬化實驗平臺方面也做了許多有益的探索與嘗試,清華大學自主研發了虛擬化網絡實驗平臺TUNIE,華東理工大學提出了一個基于OpenStack 云計算框架的創新實驗平臺,南京航空航天大學設計了基于網絡功能虛擬化NFV 的網絡試驗平臺[5-8].但這些研究多偏向于網絡功能測試和網絡設備資源管理,對虛擬化技術應用于計算機網絡課程實驗教學的研究還比較少.
本文提出基于Mininet 的網絡實驗環境,使用虛擬化技術將物理資源轉換為虛擬資源,解決了采用真實網絡硬件和模擬器軟件進行實驗教學存在的問題,并為高校計算機網絡課程創新實驗教學提供有效支撐.
虛擬化技術可以將物理硬件資源實體克隆出多個虛擬硬件資源,這些虛擬硬件資源與真實硬件資源完全一樣,每一臺虛擬機都如同真實主機,支持多種功能服務.Mininet 是一套進程虛擬化的網絡仿真平臺,可以構建出任意結構的大規模虛擬網絡,新的服務、應用和協議都可以在這個虛擬網絡中進行開發和驗證[9-10].在Mininet 中構建虛擬網絡,可以實現在同一臺計算機中虛擬出一個完整的網絡,包括控制器、路由器、交換機以及主機,其中控制器可以控制虛擬化環境中的所有網絡資源,真實設備與虛擬節點之間構成一個有層次的網絡,這樣的網絡完全滿足計算機網絡實驗教學的需求.
實驗環境以Mininet 作為底層框架,以虛擬化技術作為技術支撐搭建一個虛擬網絡實驗環境,實驗環境總體架構由物理資源層、虛擬化資源層和拓撲管理層3 層構成(見圖1).

圖1 實驗環境總體架構
1.1.1 物理資源層 物理資源層提供了實驗環境依賴的底層資源Mininet 平臺.Mininet 中可以虛擬出網絡拓撲中的虛擬節點和虛擬鏈路,可以在一臺主機上構建虛擬網絡,也可以在每個主機中構建一個虛擬子網,通過真實交換機連接多個Mininet,實現子網連接,提高網絡規模性和真實性.
1.1.2 虛擬化資源層 虛擬化是網絡實驗環境的核心技術,包含存儲虛擬化和計算虛擬化.存儲虛擬化采用Ceph 分布式文件系統技術,有效整合物理資源服務器的存儲能力;計算虛擬化采用Linux 系統下開源的KVM 技術來實現[11].
1.1.3 拓撲管理層 用戶只需要描述虛擬網絡組件就可以定制出特定的網絡實驗環境.這些虛擬網絡組件包括:虛擬機組件,支持多IP 地址集合的虛擬機;虛擬網絡設備組件,支持組網功能的網絡設備;虛擬防御實體組件,支持多種防御行為的網絡防御設備;控制器組件,支持多種類型的控制器等.拓撲管理層主要接收用戶的虛擬網絡拓撲描述數據,并對輸入的拓撲描述進行存儲和子網劃分,通過Mininet 提供的Python API 構建用戶需求的虛擬網絡拓撲[12].
利用Mininet 平臺自主構建虛擬網絡,虛擬網絡中可以真實地進行各種復雜的網絡配置,滿足了網絡實驗的需求.其次,Mininet 中提供了操作系統鏡像上傳、控制器集中管理、虛擬主機和設備創建刪除等便利操作,有利于實驗環境的恢復和網絡資源的循環利用[13].
基于Mininet 的虛擬網絡部署十分靈活,可以搭建在單節點服務器上,也可以搭建在大型集群服務器上[14-15].根據高校實驗室實際網絡硬件資源情況,可以將Mininet 搭建在2 個節點上,其中一個節點為存儲節點,負責存儲網絡實驗所需的各類鏡像文件,以及為網絡攻防實驗提供的靶場資源;另一個節點為計算節點,負責收集拓撲描述數據、計算子網劃分和節點管理.環境部署拓撲結構見圖2.

圖2 環境部署
在實驗中,經常需要建立大規模的網絡結構,可以通過Python 代碼創建虛擬網絡拓撲.因此,需要研究形式化描述虛擬網絡拓撲的方法,根據該方法,可以唯一、準確地對虛擬網絡拓撲中各個節點和鏈路的網絡配置進行描述,進而根據描述文件來實現虛擬網絡的構建和配置.研究形式化描述虛擬網絡拓撲,首先分析虛擬網絡拓撲的組分,設計一種虛擬網絡拓撲描述語言VNTDL,將虛擬網絡拓撲的組分用語言描述出來,并給出其BNF 范式.
虛擬網絡拓撲的組分主要包括虛擬節點與虛擬鏈路.虛擬節點包括虛擬機、虛擬網絡設備、虛擬防御實體、控制器和域;虛擬鏈路類型包括鏈路劃分、鏈路串聯和鏈路聚合等.
VNTDL 語法主要用來描述虛擬網絡拓撲定義部分.虛擬網絡拓撲表達式是虛擬網絡拓撲的集合,虛擬網絡拓撲包括拓撲聲明語句和拓撲描述;拓撲描述包括實體描述和實體關系描述.虛擬網絡拓撲的BNF范式:

實體描述是一個描述各類虛擬節點的集合.實體可以是虛擬機、網絡設備、網絡安全防御實體、控制器或者是域.

實體關系描述是一個描述虛擬鏈路的集合.

通過測量數據傳輸路徑損耗率實驗對提出的虛擬化教學方案進行展示.本實驗網絡拓撲見圖3.網絡中2 臺交換機s1和s2與2 臺Windows 主機h1和h2相連,2 臺交換機的一個端口分別與主機的一個物理接口相連,即s1端口1 與h1的eh1接口相連,s2端口1 與h2的eh1接口相連,同時,net1網絡由控制器c1進行遠程操控.
為了測量數據傳輸路徑損耗率,需要完成的工作:
(1)通過虛擬網絡拓撲描述語言生成網絡拓撲腳本,構建實驗網絡拓撲.

圖3 實驗網絡拓撲

(2)使用Python 編寫Mininet 腳本,實現控制器c1向s1和s2發送flow_starts_request,當控制器收到s1和s2的response 時,分別將特定流的數據包數保存在input_pkts 和output_pkts 中,兩者的差值則為丟失的數據包數量.
(3)在Mininet 網絡中執行ping 命令,讓主機互相通信,通過統計丟失的數據包數量得出損耗率.實驗結果見圖4,可以得出數據傳輸路徑的平均損耗率為5%左右.

圖4 實驗結果
實驗中,共測試3 次數據傳輸損耗率,3 次流量監測得到的損耗率變化的曲線見圖5.這3 條流量損耗率曲線分別表示第1,2,3 次執行ping 命令時20 個數據包流量損耗率的情況.
通過測量數據傳輸路徑損耗率的實驗過程可以看出,這種通過網絡流量監控獲得路徑損耗率的實驗,在真實的網絡環境中是無法實現的,而在虛擬化實驗環境中,學生可以在Mininet 中構建SDN 網絡,通過在控制器上編寫程序較容易地完成損耗率測量并得出準確結果.

圖5 數據傳輸損耗率變化曲線
采用真實硬件和模擬器軟件的方式都無法滿足計算機網絡課程實驗的實際需求.本文提出了虛擬化網絡實驗教學方案,實現了自定義拓撲、構建虛擬網絡、控制器集中管控網絡設備、網絡流量監測等功能,并以“測量數據傳輸路徑損耗率”實驗為例,展示了基于Mininet 平臺進行網絡實驗的保真性、兼容性和可編程性.虛擬化技術的有效應用,為高校的計算機網絡實驗提供了很好的實驗環境.