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