歷史
OF的最初概念始於2008年在史丹福大學開始。到2009年12月,OpenFlow交換規範1.0版發布。自成立以來,OpenFlow一直由開放網路基金會(ONF)管理,ONF是一個致力於開放標準和SDN套用的用戶主導型組織。
自其發布以來,多家公司和OpenDaylight Project等開源項目都支持OpenFlow,甚至還提供了OpenDaylight控制器。思科和博科等其他公司也提供使用OF的控制器,以及Cisco XNC和Brocade Vyatta控制器。
概論
OpenFlow能夠啟動遠程的控制器,經由網上交換器,決定網上數據包要由何種路徑通過網路交換機。這個協定的發明者,將它當成軟體定義網上(Software-defined networking)的啟動器。
OpenFlow允許從遠程控制網上交換器的數據包轉送表,透過新增、修改與移除數據包控制規則與行動,來改變數據包轉送的路徑。比起用訪問控制表(ACLs) 和路由協定,允許更複雜的流量管理。同時,OpenFlow允許不同供應商用一個簡單,開源的協定去遠程管理交換機(通常提供專有的接口和描述語言)。
OpenFlow協定用來描述控制器和交換機之間互動所用信息的標準,以及控制器和交換機的接口標準。協定的核心部分是用於OpenFlow協定信息結構的集合。
OpenFlow協定支持三種信息類型:Controller-to-Switch,Asynchronous和Symmetric,每一個類型都有多個子類型。Controller-to-Switch信息由控制器發起並且直接用於檢測交換機的狀態。Asynchronous信息由交換機發起並通常用於更新控制器的網路事件和改變交換機的狀態。Symmetric信息可以在沒有請求的情況下由控制器或交換機發起。
特點
開發者自行製造設備的方法一般是使用PC伺服器或專用硬體搭建自己的交換路由設備,受限於主機能裝備的網卡數量, 這種方法不能獲得足夠大密度的連線埠(一般交換機很容易達到48或者更多的連線埠,而主機即使插上多塊網卡也很難有這么多的連線埠),而且研究設備的交換性能一般也遠不如同價格的商用設備。在這種情況下,OpenFlow論壇提出新的交換設備解決方案必須具有以下四點性質:
第一,設備必須具有商用設備的高性能和低價格的特點;
第二,設備必須能支持各種不同的研究範圍;
第三,設備必須能隔絕實驗流量和運行流量;
第四,設備必須滿足設備製造商封閉平台的要求。
發展
由於OpenFlow對網路的創新發展起到了巨大的推動作用,因此受到了廣泛的關注和支持。由美國科學基金會(NSF)支持的Global Environment for Network Investigations (GENI)計畫對OpenFlow進行了資金支持並已開始實施“GENI Enterprise”計畫。
從2007年提出到現在,OpenFlow已經在硬體和軟體支持方面取得了長足的發展。從OpenFlow推出開始,日本NEC就對OpenFlow的相關硬體進行了跟進性的研發,NEC的IP8800/S3640-24T2XW和IP8800/S3640-48T2XW兩款交換機是支持OpenFlow的最成熟的交換機之一。CISCO,Juniper,Toroki,pronto也相繼推出了支持OpenFlow的交換機、路由器、無線網路接入點(AP)等網路設備。此外,具有OpenFlow功能的AP也已在史丹福大學進行了部署,標誌著OpenFlow已不再局限於固網。2009年12月,OpenFlow規範發布了具有里程碑意義的可用於商業化產品的1.0版本,而且支持規範1.0的軟體indigo也已發布了Beta版本。OpenFlow相應的支持軟體,如OpenFlow在Wireshark抓包分析工具上的支持外掛程式、OpenFlow的調試工具(liboftrace)、“OpenFlow虛擬計算機仿真”(OpenFlowVMS)等也已日趨成熟。
OpenFlow分別於2008年和2009年連續兩年獲得了SIGCOMM的最佳演示獎,並且享有聲望的MIT Technology Review雜誌把OpenFlow選為十大未來技術,認為其具有實力改變未來的日常生活。此外,喬治亞工學院、哥倫比亞大學、多倫多大學以及漢城國立大學分別以講座和工程實踐的方式開設了OpenFlow。OpenFlow已經在美國史丹福大學、Internet2、日本的JGN2plus以及其他的10-15個科研機構中部署,並將在國家科研骨幹網以及其他科研和生產中套用。OpenFlow的國際覆蓋已經包括日本、葡萄牙、義大利、西班牙、波蘭和瑞典等。
網路組成
OpenFlow網路由OpenFlowswitch(OpenFlow交換機)、FlowVisor(網路虛擬化層)和Controller(控制器)三部分組成。OpenFlow交換機進行數據層的轉發;FlowVisor對網路進行虛擬化;Controller對網路進行集中控制,實現控制層的功能。OpenFlow網路的結構示意圖如下:
OpenFlow交換機是整個OpenFlow網路的核心部件,主要管理數據層的轉發。OpenFlowSwitch擁有一個FlowTable(流表),它只按照流表進行轉發,FlowTable的生成、維護和下發由外置的Controller來實現。這裡的FlowTable並非是指IP五元組(IP源地址、IP目的地址、協定號、源連線埠、目的連線埠),OpenFlow1.0規範定義了包括輸入連線埠、MAC源地址、MAC目的地址、乙太網類型、VLANID、IP源地址、IP目的地址、IP連線埠、TCP源連線埠、TCP目的連線埠在內的10個關鍵字(十元組)。FlowTable中的每個關鍵字都可以通配,網路的運營商可以決定使用何種粒度的流,比如運營商只需要根據目的IP進行路由,那么FlowTable中就可以只有IP目的地址欄位是有效的,其它全為通配。傳統網路中數據包的流向是人為指定的,雖然交換機、路由器擁有控制權,卻沒有數據流的概念,只進行數據包級別的交換;而在OpenFlow網路中,統一的Controller取代路由,決定了所有數據包在網路中傳輸路徑。
OpenFlow採用控制和轉發分離的架構,意味著MAC地址的學習由Controller來實現,VLAN和基本的路由配置也由Controller下發給OpenFlowSwitch。對於三層網路設備,各類路由器運行在Controller之上,Controller根據需要下發給相應的路由器。當一個Controller同時控制多個OpenFlowSwitch時,它們看起來就像一個大的邏輯交換機。
FlowTable的下發可以是主動的,也可以是被動的。
主動模式:Controller將自己收集的FlowTable信息主動下發給OpenFlowSwitch,隨後OpenFlowSwitch可以直接根據FlowTable進行轉發。
被動模式:OpenFlowSwitch收到數據包後,首先在本地的FlowTable上查找轉發目標連線埠,如果沒有匹配,則把數據包轉發給Controller,由控制層決定轉發連線埠,並下發相應的FlowTable。被動模式的好處是網路設備無需維護全部的FlowTable,只有當實際的流量產生時才向Controller獲取FlowTable記錄並存儲,當記錄老化時可以刪除相應的FlowTable,故可以大大節省存儲器空間。
OpenFlow交換機由FlowTable(流表)、SecureChannel(安全通道)和OpenFlowProtocol(協定)三部分組成。
FlowTable流表:由很多個流表項組成,每個流表項就是一個轉發規則。進入交換機的數據包通過查詢流表來獲得轉發的目的連線埠。流表項由頭域、計數器和操作組成;其中頭域是個十元組,是流表項的標識;計數器用來計算流表項的統計數據;操作標明了與該流表項匹配的數據包應該執行的操作。
Secure Channel:安全通道是連線OpenFlow交換機到控制器的接口。控制器通過這個接口控制和管理交換機,同時控制器接收來自交換機的事件並向交換機傳送數據包。交換機和控制器通過安全通道進行通信,而且所有的信息必須按照OpenFlow協定規定的格式來執行。
相關套用
OpenFlow的套用是很廣泛的,這裡我們只是列舉五個比較典型的套用。
OpenFlow在校園網路中的套用。如果我們可以讓校園網具有OpenFlow特徵,則可以為學生和科研人員實現新協定和新算法提供一個試驗平台。OpenFlow網路試驗平台不僅更接近真實網路的複雜度,實驗效果更好,而且可以節約實驗費用。包括史丹福大學在內的幾所高校已經部署了OpenFlow交換機,取得了很好的實驗效果。
OpenFlow在廣域網和行動網路中的套用。在廣域網和行動網路中添加具有OpenFlow特徵的節點,將帶來眾多的好處。例如,可以使得固網和行動網路實現無縫控制、使得VPN的管理更加靈活等。NEC 已經利用OpenFlow控制技術對快速、寬頻的行動網路進行高效、靈活的網路管理,並解決了兩個課題。首先,在多個移動通信方式實現動態切換。在移動通信混雜時以及通信環境惡化時,動態切換通信方式,將滿足通信服務所需的服務品質,提供給終端用戶。其次,移動迴環網路的節能。在一天當中通信量相對較少的夜晚時段,可以匯集網路路徑,關閉多餘的中轉基站的電源,從而節省能源。
OpenFlow在數據中心網路中的套用。在數據中心網路中使用OpenFlow交換機,可以使得網路和計算資源更加緊密的聯繫起來並實現有效的控制。數據中心的數據流量很大,如果不能合理分配傳輸路徑很容易造成數據擁塞,從而影響數據中心的高效運行。若在數據中心網路中添加OpenFlow交換機,則可以實現路徑最佳化以及負載均衡,從而使得數據交換更加迅速。
OpenFlow在網路管理和安全控制中的套用。如果網路是基於OpenFlow技術實現的,則經過OpenFlow交換機的每個新的數據流都必須由控制器來做出轉發決定。在控制器中可以對這些流按照預先制定的規則進行檢查,然後由控制器指定數據流的傳輸路徑以及流的處理策略,從而更好的控制網路。更為重要的是,在內部網路和外網的連線處套用OpenFlow交換機可以通過更改數據流的路徑以及拒絕某些數據流來增強企業區域網路的安全性。
基於OpenFlow實現SDN(Software Defined Network)。在SDN中,交換設備的數據轉發層和控制層是分離的,因此網路協定和交換策略的升級只需要改動控制層。OpenFlow在OpenFlow交換機上實現數據轉發,而在控制器上實現數據的轉發控制,從而實現了數據轉發層和控制層的分離。基於OpenFlow實現SDN,則在網路中實現了軟硬體的分離以及底層硬體的虛擬化,從而為網路的發展提供了一個良好的發展平台。
影響
由於現在的網路暴露出了越來越多的弊病以及人們對網路性能需求的提高,於是研究人員不得不把很多複雜功能加入到路由器的體系結構當中,例如OSPF,BGP,組播,區分服務,流量工程,NAT,防火牆,MPLS等等。這就使得路由器等交換設備越來越臃腫而且性能提升的空間越來越小。
然而與網路領域的困境截然不同的是,計算機領域實現了日新月異的發展。仔細回顧計算機領域的發展,不難發現其關鍵在於計算機領域找到了一個簡單可用的硬體底層(x86指令集)。由於有了這樣一個公用的硬體底層,所以在軟體方面,不論是應用程式還是作業系統都取得了飛速的發展。很多主張重新設計計算機網路體系結構的人士認為:網路可以複製計算機領域的成功經驗來解決現在網路所遇到的所有問題。在這種思想的指導下,將來的網路必將是這樣的:底層的數據通路(交換機、路由器)是“啞的、簡單的、最小的”,並定義一個對外開放的關於流表的公用的API,同時採用控制器來控制整個網路。未來的研究人員就可以在控制器上自由的調用底層的API來編程,從而實現網路的創新。
OpenFlow正是這種網路創新思想的強有力的推動者。OpenFlow交換機將原來完全由交換機/路由器控制的報文轉發過程轉化為由OpenFlow交換機(OpenFlow Switch)和控制伺服器(Controller)來共同完成,從而實現了數據轉發和路由控制的分離。控制器可以通過事先規定好的接口操作來控制OpenFlow交換機中的流表,從而達到控制數據轉發的目的。
因此,OpenFlow開啟了一條網路創新的道路。如果OpenFlow得到廣泛的套用和推廣,則未來的網路將如曾經的計算機一樣取得日新月異的發展。