李寧 郝志安 李艷
(中國電子科技集團公司第五十四研究所河北石家莊 050081)
隨著云計算、大數(shù)據(jù)和物聯(lián)網(wǎng)等新興技術(shù)的發(fā)展,使得網(wǎng)絡(luò)數(shù)據(jù)、流量和管理變得復(fù)雜化,將控制平面和數(shù)據(jù)轉(zhuǎn)發(fā)平面緊耦合在網(wǎng)絡(luò)設(shè)備上的傳統(tǒng)網(wǎng)絡(luò),體系結(jié)構(gòu)“僵化”,已經(jīng)無法面對這些新技術(shù)對網(wǎng)絡(luò)提出的更高要求[1]。為了解決當(dāng)前互聯(lián)網(wǎng)所面臨的各種問題,人們進行了各種各樣的探索和研究。其中,OpenFlow 網(wǎng)絡(luò)就是提出的一種新型網(wǎng)絡(luò)架構(gòu)。
OpenFlow[2]技術(shù)最早由斯坦福大學(xué)提出,旨在基于現(xiàn)有TCP/IP 技術(shù)條件,以創(chuàng)新的網(wǎng)絡(luò)互聯(lián)理念解決當(dāng)前網(wǎng)絡(luò)面對新業(yè)務(wù)產(chǎn)生的種種瓶頸。OpenFlow 通過把原有封閉的體系架構(gòu)解耦為數(shù)據(jù)平面和控制平面,大大降低了網(wǎng)絡(luò)的復(fù)雜度,從而將革命性地改變現(xiàn)有的網(wǎng)絡(luò)架構(gòu),為網(wǎng)絡(luò)業(yè)務(wù)創(chuàng)新提供網(wǎng)絡(luò)支持。
OpenFlow的核心思想是將原本完全由交換機/路由器控制的數(shù)據(jù)包轉(zhuǎn)發(fā)過程[3],轉(zhuǎn)化為由OpenFlow 交換機和控制器分別獨立完成的過程。OpenFlow 網(wǎng)絡(luò)架構(gòu)如圖1 所示。
圖1 OpenFlow 網(wǎng)絡(luò)架構(gòu)
OpenFlow 網(wǎng)絡(luò)由OpenFlow 交換機和控制器兩部分組成[4]。OpenFlow 交換機只進行簡單的數(shù)據(jù)轉(zhuǎn)發(fā);控制器是整個系統(tǒng)的大腦,負(fù)責(zé)對底層轉(zhuǎn)發(fā)設(shè)備的集中控制,實現(xiàn)控制層的功能。
OpenFlow 交換機由一個或多個流表、一個組表、安全通道和OpenFlow 協(xié)議四部分組成。其中,流表是控制交換機轉(zhuǎn)發(fā)策略的核心數(shù)據(jù)結(jié)構(gòu)。在OpenFlow 網(wǎng)絡(luò)中,傳統(tǒng)的FIB 表和MAC 表等都被OpenFlow 協(xié)議統(tǒng)一整合為流表;數(shù)據(jù)的轉(zhuǎn)發(fā)是基于流的,集中的控制器通過對流表的管理,決定了數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸路徑。流表由流表項組成,每個流表項的結(jié)構(gòu)如圖2 所示。
圖2 OpenFlow 流表項結(jié)構(gòu)
圖中:①匹配域:包括了用于和交換機接收到的數(shù)據(jù)包進行匹配的15 個元組,涵蓋了ISO 網(wǎng)絡(luò)模型中第二至第四層的網(wǎng)絡(luò)配置信息;②優(yōu)先級:流表項的匹配順序;③計數(shù)器:用于統(tǒng)計數(shù)據(jù)流的相關(guān)信息;④超時:最大時間計數(shù)或流有效時間;⑤指令:修改行動集或流水線處理;⑥Cookie:由控制器選擇的不透明數(shù)據(jù)值。控制器用來過濾流統(tǒng)計數(shù)據(jù)、流改變和流刪除。
OpenFlow 網(wǎng)絡(luò)中,交換機維護一個或多個數(shù)據(jù)流表項,數(shù)據(jù)流表項的編號從0 開始,當(dāng)有數(shù)據(jù)流進入交換機時,到達的數(shù)據(jù)流首先與流表項0的匹配域進行比較,如果匹配,計數(shù)器會增加,然后通過流表指令執(zhí)行流表項中指定的行動;如果不匹配,那么就和下一個流表項進行比較。通過控制器對流表的控制,OpenFlow 可以精確地實現(xiàn)基于端到端的流管控。
OpenFlow 控制器將傳統(tǒng)交換設(shè)備中分散的控制能力進行了集中化,是OpenFlow 網(wǎng)絡(luò)的大腦,它負(fù)責(zé)對轉(zhuǎn)發(fā)設(shè)備的統(tǒng)一控制。控制器和交換機之間通過OpenFlow 協(xié)議進行通信,控制器可以通過對事先規(guī)定好的TCP 接口(默認(rèn)6633 端口)進行操作來控制OpenFlow 交換機中的流表,從而達到控制數(shù)據(jù)轉(zhuǎn)發(fā)的目的。
OpenFlow 網(wǎng)絡(luò)環(huán)境首先就是要實現(xiàn)數(shù)據(jù)層和控制層的分離[5],其中底層交換機負(fù)責(zé)數(shù)據(jù)層的轉(zhuǎn)發(fā),而控制器實現(xiàn)控制層的功能?;贠penFlow 網(wǎng)絡(luò)的仿真研究至少應(yīng)該包括3個方面要素:①底層網(wǎng)絡(luò)設(shè)備:包括多個交換機;②控制器:完成對底層網(wǎng)絡(luò)連接及數(shù)據(jù)流的控制;③仿真演示工具:包括抓包、拓?fù)滹@示等。
(1)OpenFlow 底層設(shè)備—Mininet
Mininet 是由stanford 大學(xué)Nick McKeown 研究小組基于Linux Container 架構(gòu)研究開發(fā)完成的一個輕量級軟件定義網(wǎng)絡(luò)研發(fā)和測試平臺,操作簡單,一行命令可以啟動一個簡單的測試網(wǎng)絡(luò)。
(2)OpenFlow 控制器—Floodlight[6]
Floodlight 是一個支持Apache 協(xié)議的企業(yè)級OpenFlow 控制器。Floodlight 作為一個軟件模塊部署在PC Server 上。
(3)仿真演示工具—Wireshark
Wireshark 是一個網(wǎng)絡(luò)封包分析軟件,功能是抓取網(wǎng)絡(luò)封包,并盡可能顯示出網(wǎng)絡(luò)封包信息。
控制器通過OpenFlow 協(xié)議標(biāo)準(zhǔn)接口對底層交換機中的流表進行控制,從而實現(xiàn)數(shù)據(jù)包的轉(zhuǎn)發(fā)和對整個網(wǎng)絡(luò)的集中控制??刂破髋c交換機的一次典型交互過程如圖3 所示。首先是交換機和控制器之間的say hello 過程,雙方建立連接;接下來控制器通過Features_Request 消息來查詢交換機的能力,交換機返回Features_Reply 消息應(yīng)答自身支持的功能;然后控制器向交換機發(fā)送Set_Config 消息對交換機進行配置;配置完成后,控制器和交換機之間通過Stats_Request 和Stats_Reply 進行交換機當(dāng)前狀態(tài)的查詢與應(yīng)答。
圖3 控制器與交換機的一次典型交互過程
通過Mininet 命令行搭建一個底層網(wǎng)絡(luò)拓?fù)?,包? 臺交換機,每臺交換機連接2 個終端;Floodlight 控制器與交換機相連,可以對底層網(wǎng)絡(luò)拓?fù)溥M行發(fā)現(xiàn)和管理,如圖4 所示。
圖4 Mininet 網(wǎng)絡(luò)建模及Floodlight 捕獲的拓?fù)?/p>
Floodlight 通過向底層交換機下發(fā)流表,實現(xiàn)數(shù)據(jù)包的轉(zhuǎn)發(fā)和對整個網(wǎng)絡(luò)的集中控制。通過Wireshark 獲取網(wǎng)絡(luò)封包,可以看到控制器與交換機的交互過程及封包信息。
通過Mininet 命令實現(xiàn)如圖4 所示的網(wǎng)絡(luò)拓?fù)洌谠摼W(wǎng)絡(luò)執(zhí)行h2 ping h4 操作,由于2 個客戶端之間無數(shù)據(jù)通路,ping 操作無法得到響應(yīng),如圖5 所示。
圖5 流表下發(fā)之前,終端之間無法ping 通
由控制器Floodlight 向底層交換機下發(fā)流表,增加h2 到h4 之間的雙向數(shù)據(jù)通路,從而實現(xiàn)2 個客戶端之間的互通,此時h2 可以ping 通h4,如圖6 所示。
圖6 流表下發(fā)及之后h2 和h4 之間可以ping 通
上述控制器和交換機的交互過程可以通過wireshark 軟件過濾到的OpenFlow 協(xié)議包進行驗證,該抓包結(jié)果與圖3 所示的典型交互過程一致,如圖7 所示。
圖7 wireshark 抓包
本文在介紹OpenFlow 技術(shù)原理和OpenFlow 網(wǎng)絡(luò)環(huán)境搭建方法的基礎(chǔ)上,利用Mininet 和Floodlight 軟件搭建并研究了OpenFlow 網(wǎng)絡(luò)環(huán)境。OpenFlow 網(wǎng)絡(luò)環(huán)境實現(xiàn)了控制與轉(zhuǎn)發(fā)的分離,控制器通過標(biāo)準(zhǔn)的OpenFlow 協(xié)議對底層交換機進行配置、流表下發(fā)和狀態(tài)管理,從而實現(xiàn)對整個網(wǎng)絡(luò)進行集中控制,本文為基于OpenFlow 網(wǎng)絡(luò)的研究提供了良好的平臺支撐。
[1]黃寶座,趙喜求.OpenFlow 技術(shù)及應(yīng)用優(yōu)勢分析[J].電腦知識與技術(shù),2012,8(25):59-85.
[2]左青云,陳 鳴,趙廣松.基于OpenFlow的SDN 技術(shù)研究[J].軟件學(xué)報,2013,24(5):1078-1079.
[3]MCKEOWN N,ANDERSON T,BALAKRISHNAN H,et al.OpenFlow:Enabling Innovation in Campus Networks[J].ACM SIGCOMM Computer Communication Review,2008,38(2):69-74.
[4]韋世紅,盧 威.基于OpenFlow的未來互聯(lián)網(wǎng)試驗網(wǎng)[J].計算機應(yīng)用系統(tǒng).2013,22(5):21-23.
[5]王麗君,劉永強,張 健.基于OpenFlow的未來互聯(lián)網(wǎng)試驗技術(shù)研究[J].電信網(wǎng)技術(shù),2011,8(6):1-4.
[6]侯長逸.OpenFlow 網(wǎng)絡(luò)軟件路由研究[J].蘭州大學(xué)學(xué)報,2013,49(2):262.