【轉】OpenFlow是什么?OpenFlow和SDN之間是什么關系?


前言

OpenFlow 是一種網絡通信協議,應用於 SDN 架構中控制器和轉發器之間的通信。軟件定義網絡 SDN 的一個核心思想就是“轉發、控制分離”,要實現轉、控分離,就需要在控制器與轉發器之間建立一個通信接口標准,允許控制器直接訪問和控制轉發器的轉發平面。

OpenFlow 引入了“流表”的概念,轉發器通過流表來指導數據包的轉發。控制器正是通過 OpenFlow 提供的接口在轉發器上部署相應的流表,從而實現對轉發平面的控制。

OpenFlow 的起源與發展

OpenFlow 起源於斯坦福大學的 Clean Slate 項目,該項目的目標是要“重塑互聯網”,旨在改變設計已略顯不合時宜,且難以進化發展的現有網絡基礎架構。在 2006 年,斯坦福的學生 Martin Casado 領導了一個關於網絡安全與管理的項目,試圖通過一個集中式的控制器,讓網絡管理員方便地定義基於網絡流的安全控制策略,並將這些安全策略應用到各種網絡設備中,從而實現對整個網絡通訊的安全控制。

受此項目啟發,Clean Slate 項目的負責人 Nick McKeown 教授及其團隊發現,如果將傳統網絡設備的數據轉發和路由控制兩個功能模塊相分離,通過集中式的控制器(Controller)以標准化的接口對各種網絡設備進行管理和配置,那么這將為網絡資源的設計、管理和使用提供更多的可能性,從而更容易推動網絡的革新與發展。

於是,他們便提出了 OpenFlow 的概念,並且於 2008 年發表了題為《OpenFlow: Enabling Innovation in Campus Networks》的論文,首次詳細地介紹了 OpenFlow 的原理和應用場景。

2009 年,基於 OpenFlow,該研究團隊進一步提出了 SDN(Software Defined Network,軟件定義網絡)的概念,引起了行業的廣泛關注和重視。

2011 年,由Google、Facebook、微軟等公司共同發起成立了一個對 SDN 影響深遠的組織 ONF(Open Networking Foundation),致力於發展 SDN。ONF 將OpenFlow 定義為 SDN 架構的控制層和轉發層之間的第一個南向標准通信接口,並加大 OpenFlow 的標准化力度。

OpenFlow在SDN中的位置

自 2009 年底發布第一個正式版本 v1.0 以來,OpenFlow 協議已經經歷了 1.1、1.2、1.3 以及最新發布的 1.5 等版本的演進過程。目前使用和支持最多的是 OpenFlow1.0 和 OpenFlow1.3 版本。

OpenFlow各個版本的演進過程和主要變化

OpenFlow的工作原理

整個 OpenFlow 協議架構由控制器(Controller)、OpenFlow交換機(OpenFlow Switch)、以及安全通道(Secure Channel)組成。控制器對網絡進行集中控制,實現控制層的功能;OpenFlow 交換機負責數據層的轉發,與控制器之間通過安全通道進行消息交互,實現表項下發、狀態上報等功能。

OpenFlow協議架構

OpenFlow控制器

OpenFlow 控制器位於 SDN 架構中的控制層,是 SDN 的“大腦”,通過 OpenFlow 協議指導設備的轉發。目前主流的 OpenFlow 控制器分為兩大類:

  • 開源控制器

  • 廠商開發的商用控制器。

常見的開源控制器例如 NOX/POX、OpenDaylight 等。廠商的商用控制器有 Huawei 的 iMaster NCE 等。

OpenFlow安全通道

安全通道就是連接 OpenFlow 交換機與控制器的信道,負責在 OpenFlow 交換機和控制器之間建立安全鏈接。控制器通過這個通道來控制和管理交換機,同時接收來自交換機的反饋。

通過 OpenFlow 安全通道的信息交互必須按照 OpenFlow 協議規定的格式來執行,通常采用 TLS(Transport Layer Security)加密,在一些 OpenFlow 版本中(1.1及以上),有時也會通過 TCP 明文來實現。通道中傳輸的 OpenFlow 消息類型包括以下三種:

  • Controller-to-Switch 消息:由控制器發出、OpenFlow 交換機接收並處理的消息,主要用來管理或獲取 OpenFlow 交換機狀態。

  • Asynchronous 消息:由 OpenFlow 交換機發給控制器,用來將網絡事件或者交換機狀態變化更新到控制器。

  • Symmetric 消息:可由 OpenFlow 交換機發出也可由控制器發出,也不必通過請求建立,主要用來建立連接、檢測對方是否在線等。

OpenFlow交換機

OpenFlow 交換機是整個 OpenFlow 網絡的核心部件,主要負責數據層的轉發。OpenFlow 交換機可以是物理的交換機/路由器,也可以是虛擬化的交換機/路由器。按照對 OpenFlow 的支持程度,OpenFlow 交換機可以分為兩類:

  • OpenFlow 專用交換機:一個標准的 OpenFlow 設備,僅支持 OpenFlow 轉發。他不支持現有的商用交換機上的正常處理流程,所有經過該交換機的數據都按照 OpenFlow 的模式進行轉發。

  • OpenFlow 兼容型交換機:既支持 OpenFlow 轉發,也支持正常二三層轉發。這是在商業交換機的基礎上添加流表、安全通道和 OpenFlow 協議來獲得了 OpenFlow 特性的交換機。

OpenFlow 交換機在實際轉發過程中,依賴於流表(Flow Table)。流表是 OpenFlow 交換機進行數據轉發的策略表項集合,指示交換機如何處理流量,所有進入交換機的報文都按照流表進行轉發。流表本身的生成、維護、下發完全由控制器來實現。

流表項的組成

在傳統網絡設備中,交換機/路由器的數據轉發需要依賴設備中保存的二層 MAC 地址轉發表、三層 IP 地址路由表以及傳輸層的端口號等。OpenFlow 交換機中使用的“流表”也是如此,不過他的表項並非是指普通的 IP 五元組,而是整合了網絡中各個層次的網絡配置信息,由一些關鍵字和執行動作組成的靈活規則。

OpenFlow 流表的每個流表項都由匹配域(Match Fields)、處理指令(Instructions)等部分組成。流表項中最為重要的部分就是匹配域和指令,當 OpenFlow 交換機收到一個數據包,將包頭解析后與流表中流表項的匹配域進行匹配,匹配成功則執行指令。

流表項的結構隨着 OpenFlow 版本的演進不斷豐富,不同協議版本的流表項結構如下。

流表項組成

多級流表與流水線處理

OpenFlow v1.0 采用單流表匹配模式,這種模式雖然簡單,但是當網絡需求越來越復雜時,各種策略放在同一張表中顯得十分臃腫。這使得控制平面的管理變得十分困難,而且隨着流表長度與數目的增加,對硬件性能要求也越來越高。

從 OpenFlow v1.1 開始引入了多級流表和流水線處理機制,當報文進入交換機后,從序號最小的流表開始依次匹配,報文通過跳轉指令跳轉至后續某一流表繼續進行匹配,這樣就構成了一條流水線。多級流表的出現一方面能夠實現對數據包的復雜處理,另一方面又能有效降低單張流表的長度,提高查表效率。

多級流表處理流程

流表下發方式

OpenFlow 流表的下發分可以是主動(Proactive)的,也可以是被動(Reactive)的:

  • 主動模式下,控制器將自己收集的流表信息主動下發給 OpenFlow 交換機,隨后交換機可以直接根據流表進行轉發。

  • 被動模式下,OpenFlow 交換機收到一個報文而查流表失敗時,會發送消息詢問控制器,由控制器進行決策該如何轉發,並計算、下發相應的流表。被動模式的好處是交換機無需維護全部的流表,只有當實際的流量產生時才向控制器獲取流表記錄並存儲,當老化定時器超時后可以刪除相應的流表,因此可以大大節省交換機芯片空間。

OpenFlow 的應用場景

隨着 OpenFlow 概念的發展和推廣,其研究和應用領域也得到了不斷拓展,主要包括網絡虛擬化、安全和訪問控制、負載均衡等方面。下面以幾個典型的場景來展示OpenFlow的應用:

OpenFlow 在校園網絡中的應用

科研院校網絡是 OpenFlow 的發源地,也是 OpenFlow 被廣泛應用的網絡環境。學生或研究人員在進行網絡創新性研究時,可能會有全新設計的網絡控制協議和數據轉發技術需要驗證,他們希望有一個平台能幫助他們把網絡的控制、轉發獨立出來,以便能在平台上自由驗證他們的研究工作。基於 OpenFlow 的網絡正好可以提供這樣一個試驗平台,不僅更接近真實網絡的復雜度,實驗效果好,而且可以節約實驗費用。

OpenFlow 在數據中心網絡中的應用

雲數據中心是 OpenFlow 得以發揚光大的地方。雲數據中心部署時存在多租戶資源動態創建、流量隔離以及虛擬機動態遷移等虛擬化需求,OpenFlow交換機可以配合雲管理平台實現網絡資源的動態分配和網絡流量的按需傳輸,實現雲服務的網絡虛擬化需求並可以改善網絡性能。其次,在數據中心的流量很大,如果不能合理分配傳輸路徑很容易造成數據擁塞,從而影響數據中心的高效運行。如果在數據中心中部署 OpenFlow,可以動態獲取各鏈路的流量傳輸情況,動態下發 OpenFlow 流表規則進行均衡調度,實現路徑優化以及負載均衡。

OpenFlow在園區網絡中的應用

在園區網絡中可以使用 OpenFlow 對接入層設備進行有效的管控。接入層設備的特點是量大、故障率高,但設備功能和流量策略相對簡單。如果使用 OpenFlow,可以在控制器上集中統一對接入設備進行流表下發、網絡監控等維護工作。在要求用戶身份認證的場合,可以把認證流量引導到控制器上,在驗證用戶身份合法后再下發准入規則到用戶連接的交換機端口上。在控制器檢測到特定網絡端口或特定用戶流量異常時,可以通過下發規則關停設備端口或限制特定流量,快速恢復網絡故障,提高網絡可靠性和安全性。

原文鏈接:https://info.support.huawei.com/info-finder/encyclopedia/zh/OpenFlow.html

每天學習一點點,每天進步一點點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM