OpenFlow網絡的基本組成
OpenFlow網絡由OpenFlow交換機、Flow Visor和Controller三部分組成。OpenFlow交換機進行數據層的轉發;FlowVisor對網絡進行虛擬化;Controller對網絡進行集中控制,實現控制層的功能。OpenFlow網絡的結構示意圖如下:
OpenFlow交換機
OpenFlow交換機是整個OpenFlow網絡的核心部件,主要管理數據層的轉發。OpenFlow交換機接收到數據包后,首先在本地的流表上查找轉發目標端口,如果沒有匹配,則把數據包轉發給Controller,由控制層決定轉發端口。
OpenFlow交換機的組成
OpenFlow交換機由流表、安全通道和OpenFlow協議三部分組成。
安全通道是連接OpenFlow交換機到控制器的接口。控制器通過這個接口控制和管理交換機,同時控制器接收來自交換機的事件并向交換機發送數據包。交換機和控制器通過安全通道進行通信,而且所有的信息必須按照OpenFlow協議規定的格式來執行。
OpenFlow協議用來描述控制器和交換機之間交互所用信息的標準,以及控制器和交換機的接口標準。協議的核心部分是用于OpenFlow協議信息結構的集合。
OpenFlow協議支持三種信息類型:Controller-to-Switch,Asynchronous和Symmetric,每一個類型都有多個子類型。Controller-to-Switch信息由控制器發起并且直接用于檢測交換機的狀態。Asynchronous信息由交換機發起并通常用于更新控制器的網絡事件和改變交換機的狀態。Symmetric信息可以在沒有請求的情況下由控制器或交換機發起。
OpenFlow交換機的分類
按照對OpenFlow的支持程度,OpenFlow交換機可以分為兩類:專用的OpenFlow交換機和支持OpenFlow的交換機。
專用的OpenFlow交換機是專門為支持OpenFlow而設計的。它不支持現有的商用交換機上的正常處理流程,所有經過該交換機的數據都按照OpenFlow的模式進行轉發。專用的OpenFlow交換機中不再具有控制邏輯,因此專用的OpenFlow交換機是用來在端口間轉發數據包的一個簡單的路徑部件。
支持OpenFlow的交換機是在商業交換機的基礎上添加流表、安全通道和OpenFlow協議來獲得了OpenFlow特性的交換機。其既具有常用的商業交換機的轉發模塊,又具有OpenFlow的轉發邏輯,因此支持OpenFlow的交換機可以采用兩種不同的方式處理接收到的數據包。
按照OpenFlow交換機的發展程度來分,OpenFlow交換機也可以分為兩類:“Type0”交換機和“Type1”交換機。
“Type0”交換機僅僅支持十元組以及以下四個操作:轉發這個流的數據包給一個給定的端口(或者幾個端口);壓縮并轉發這個流的數據包給控制器;丟棄這個流的數據包;通過交換機的正常處理流程來轉發這個流的數據包。
顯然“Type0”交換機的這些功能是不能滿足復雜試驗要求的,因此我們將要定義“Type1”交換機來支持更多的功能,從而支持復雜的網絡試驗。“Type1”交換機將具有一個新的功能集合。
支持網絡虛擬化的FlowVisor
類比計算機的虛擬化,FlowVisor就是位于硬件結構元件和軟件之間的網絡虛擬層。FlowVisor允許多個控制同時控制一臺OpenFlow交換機,但是每個控制器僅僅可以控制經過這個OpenFlow交換機的某一個虛擬網絡(即slice)。因此通過FlowVisor建立的試驗平臺可以在不影響商業流的轉發速度的情況下,允許多個網絡試驗在不同的虛擬網絡上同時進行。FlowVisor與一般的商用交換機是兼容的,而不需要使用FPGA和網絡處理器等可編程硬件。
Controller
OpenFlow實現了數據層和控制層的分離,其中OpenFlow交換機進行數據層的轉發,而Controller實現了控制層的功能。Controller通過OpenFlow協議這個標準接口對OpenFlow交換機中的流表進行控制,從而實現對整個網絡進行集中控制。Controller的這一切功能都要通過運行NOX來實現,因此NOX就像是OpenFlow網絡的操作系統。此外,在NOX上還可以運行Plug-n-serve、OpenRoads以及OpenPipes等應用程序。
Plug-n-Serve 通過規定數據傳輸路徑來控制網絡以及服務器上的負載,從而使得負載均衡并降低響應時間。OpenRoads 是支持OpenFlow無線網絡移動性研究的框架。OpenPipes 可以在網絡系統中通過移動每個子模塊來測試每個子模塊,并可以決定如何劃分設計單元。