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