黃家瑋,劉敬玲,徐文茜,李又明,王建新
(中南大學 信息科學與工程學院,湖南 長沙 410083)
實驗與實訓
軟件定義網絡的實驗教學方案設計
黃家瑋,劉敬玲,徐文茜,李又明,王建新
(中南大學 信息科學與工程學院,湖南 長沙 410083)
以控制器集中控制交換機數據轉發的實驗為例,展示基于真實操作系統內核的輕量級虛擬實驗平臺的網絡拓撲配置、路由配置和用戶交互流程,具體介紹實驗方案、設計思想和實驗過程。
軟件定義網絡;虛擬化;Mininet;實驗教學
軟件定義網絡(Software Def ned Networking,SDN)是一種新型的網絡架構,針對傳統網絡中硬件設備繁雜、網絡配置麻煩、迭代升級緩慢的問題,將傳統網絡設備分離成集中式的控制平面和分布式的轉發平面,通過集中式的控制器(Controller)以標準化的接口對各種網絡設備進行管理和配置[1]。軟件定義網絡的核心在于利用軟件編程技術,為網絡提供靈活的可編程能力,具有集中統一管理網絡、監管動態流量、部署自動化的特點。因此,作為目前學術界和工業界的熱點,軟件定義網絡逐漸被引入計算機科學與技術、網絡空間安全等相關專業的知識體系中,成為本科和研究生計算機網絡課程的一個重要教學內容[2]。
軟件定義網絡的實驗教學需要良好的硬件支持,以提供網絡編程和操作的實驗環境,但現在支持軟件定義網絡功能的硬件設備相對昂貴,在有限的資金投入下,很難開展大規模的課程實驗。同時,目前采用硬件設備的實驗也存在靈活性受限的問題,學生難以深入進行實踐操作,最終影響了教學效果。
為幫助學生掌握軟件定義網絡的工作原理,筆者利用Mininet[3]網絡模擬軟件,搭建基于真實操作系統內核的輕量級虛擬實驗平臺,提供配置靈活、擴展性強、價格低廉、可重復性的軟件定義網絡實驗環境。學生可以通過簡單易操作的實驗,理解軟件定義網絡架構,掌握其工作流程。
目前,軟件定義網絡的實驗模擬軟件主要是Mininet和NS3[4]。兩種軟件各自具有以下的功能特點。
Mininet基于 Linux Container 架構,是斯坦福大學Nick McKeown 教授領導的研究小組開發進程虛擬化的實驗平臺,可以在計算機上模擬完整的網絡主機、鏈路和交換機。Mininet支持OpenFlow[5]、OpenSwitch[6]等各種軟件定義網絡的協議,提供一個低成本軟件定義網絡仿真實驗環境,目前被作為OpenFlow協議演示和測試的官方演示平臺。同時,Mininet還配備了WireShark抓包軟件,方便開發者和學習者進行開發和研究。
NS3是一個面向離散事件的經典網絡仿真器,由C++和Python語言編寫,包含了許多開發模塊,以支持多種協議棧的開發。目前,其最新版本已經支持軟件定義網絡的OpenFlow協議,可以方便地創建模擬一個OpenFlow環境,用于網絡實時模擬。
NS3的軟件定義網絡控制器是其自主開發,缺乏靈活性;而Mininet除了可以使用其內部嵌入的控制器,還可以靈活地加載其他控制器。同時,相對Mininet輕量級的模塊庫,NS3模塊庫過于龐大。此外,Mininet還提供Python API,能簡化在實際開發研究過程中涉及底層代碼的修改等操作。因此,我們選擇采用Mininet平臺來進行軟件定義網絡的模擬實驗。
3.1 實驗目的
我們基于Mininet平臺,設計了“軟件定義網絡控制器的數據包轉發控制”實驗。實驗的目的是幫助學生熟悉Mininet網絡模擬平臺,理解控制器的工作流程,掌握網絡拓撲的創建過程和聯通測試方法。
3.2 實驗內容和原理
實驗主要內容如下:①利用腳本語言創建網絡拓撲;②測試網絡的聯通性;③配置OpenDayLight控制器,編輯交換機轉發表項。實驗原理主要是通過網絡控制器對交換機的轉發表進行編輯,控制軟件定義網絡的數據包轉發。
3.3 實驗環境
實驗環境包括部署在同一個網段內的兩臺虛擬機,分別部署OpenDayLight控制器和Mininet模擬器。網絡中還有三臺互連的虛擬交換機s1、s2、s3,形成一個環路。每臺交換機上連接一臺主機,以方便測試所需。
3.4 實驗過程
3.4.1 創建拓撲
Mininet模擬器使用Python腳本完成實驗配置,在導入常見的功能和輔助模塊后,創建網絡拓撲。網絡拓撲定義為MyTopo類,使用形如h1 = self.addHost(‘h1’) 代碼創建三臺主機h1、h2和h3,使用形如s1 = self.addSwitch(‘s1’) 代碼創建三臺交換機s1、s2和s3,使用形如self. addLink(s1,s2)代碼添加鏈路s1-s2、s1-s3、s2-s3、h1-s1、s2-h2和s3-h3。最終,可以開啟控制器服務,通過OpenDayLight的Web UI可以查看網絡拓撲結構(見圖1)。

圖1 OpenDayLight控制器顯示的網絡拓撲
3.4.2 連通測試
在Mininet模擬器上執行pingall命令,測試主機間的聯通情況。從圖2可知,Mininet上執行pingall后,所有主機間均相互聯通。

圖2 第一次pingall后終端顯示結果
查看交換機的轉發表,可以看到每臺交換機都出現3條轉發表項,分別是指明目的地址為h1、h2、h3 3臺主機轉發路徑,這說明已經成功建立實驗場景。
3.4.3 轉發控制
我們通過控制器對交換機的轉發行為實施控制,通過OpenDayLight控制器的web UI,對交換機s1增加了一條新的轉發表項。該轉發表項將丟棄發往端口3的所有數據包。
在交換機s1中,目的地址為主機h3的數據包是經由端口3轉發出去,而新增的轉發表項將會丟棄此類數據包。因此,當此時Mininet模擬器再次執行pingall指令后,h1與h3無法互相聯通,其結果如圖3所示。這說明控制器在交換機上新增的轉發表項已經截斷了交換機s1與s3之間的直通鏈路。

圖3 增加新轉發表項后pingall結果
對于傳統網絡的交換機而言,交換機是通過“學習”知道網絡中主機的位置,從而更新自己的轉發表,并轉發數據包。而從以上的實驗結果可以看出,在軟件定義網絡架構中,交換機上的轉發表是通過控制器進行管理操作的,交換機僅負責在數據平面轉發數據包。這也就實現了數據平面和控制平面的分離。
在基于Mininet的軟件定義網絡實驗中,學生利用虛擬環境可以靈活、簡便、快速地搭建實驗網絡環境,開展面向Linux操作系統內核和真實網絡操作的課程實驗,不但可以深入理解軟件定義網絡架構和工作原理,還可以直接進行網絡設備操作,在知識掌握和應用能力方面都得到了有效的提升。
[1] 張朝昆, 崔勇, 唐翯祎, 等. 軟件定義網絡(SDN)研究進展[J]. 軟件學報, 2015, 26(1): 62-81.
[2] 張連成, 奚琪, 郭毅, 等. 基于Mininet模擬環境的軟件定義網絡實驗課程設計[J]. 計算機教育, 2015(6): 104-107.
[3] Lantz B, Heller B, McKeown N. A network in a laptop: rapid prototyping for software-def ned networks [C]// Proceedings of the 9th ACM SIGCOMM Workshop on Hot Topics in Networks. New York: ACM, 2010: 1-6.
[4] The network simulator[EB/OL]. (2013-02-10)[2015-04-10]. http://www.isi.edu/nsnam/ns.
[5] McKeown N, Anderson T, Balakrishnan H, et al. OpenFlow: Enabling innovation in campus networks[J]. ACM SIGCOMM CCR, 2008, 38(2): 69-74.
[6] OpenFlow switch specif cation, version 1.4.0[EB/OL]. (2013-05-10)[2015-04-10]. https://www. opennetworking.org/.
(編輯:史志偉)
1672-5913(2017)03-0152-03
G642
國家自然科學基金項目“數據中心網絡中延時敏感的傳輸控制機制研究”(61572530) ;賽爾網絡下一代互聯網技術創新項目“基于IPv6的數據中心網絡傳輸控制機制研究”(NGII20160113);湖南省普通高等學校教學改革研究項目“網絡空間安全專業課程的虛擬實驗教學研究與實踐”。
黃家瑋,男,教授,研究方向為計算機網絡理論,jiaweihuang@csu.edu.cn。