SDN-OpenFlow

SDN-OpenFlow

“流”的概念:IP網絡是一種基於數據分組轉發的分組交換網絡,一次網絡通信會產生大量的數據分組雖然它們有千絲萬縷的聯繫,但是傳統網絡設備對它們的處理卻是獨立的,這大大降低了處理的效率。

SDN的核心思想是數據與控制分離,在OpenFlow引入了“流”的概念後,控制器可以根據某次通信中“流”的第一個數據分組的特徵,使用OpenFlow協議提供的接口對數據平面設備(

OpenFlow交換機,以下簡稱OF交換機)部署策略——OpenFlow稱之爲流表,而這次通信的後續流量則按照相應流表在硬件層次上進行匹配、轉發,從而實現了靈活的網絡轉發平面策略,網絡設備不再受固定協議的約束,即軟件與硬件“解耦”,體現了SDN控制與數據分離的核心思想。
在這裏插入圖片描述
OpenFlow-V1

SDN的核心思想是數據與控制分離,在OpenFlow引入了“流”的概念後,控制器可以根據某次通信中“流”的第一個數據分組的特徵,使用OpenFlow協議提供的接口對數據平面設備(OpenFlow交換機,以下簡稱OF交換機)部署策略——OpenFlow稱之爲流表,而這次通信的後續流量則按照相應流表在硬件層次上進行匹配、轉發,從而實現了靈活的網絡轉發平面策略,網絡設備不再受固定協議的約束,即軟件與硬件“解耦”,體現了SDN控制與數據分離的核心思想。

OpeenFlow控制器通過部署流表來指導數據平面流量。

nFlow v1.0中每臺 OF交換機只有一張流表,這張流表中存儲着許多的表項,每一個表項都表徵了一個“流”及其對應的處理方法——動作表(Action),一個數據分組進入 OF交換機後需要先匹配流表,若符合其中某條表項的特徵,則按照相應的動作進行轉發,否則封裝爲Packet-in消息通過安全通道交給控制器,再由控制器決定如何處理,例如是否封裝
Flow-mod消息下發新的流表項。另外,每條流表項都存在一個有效期,過期之後流表會自動刪除.

(1)流表項的結構

OpenFlow的流表項主要由3部分組成,分別是用於數據分組匹配的分組頭域(Head

Field),用於統計流表匹配情況的計數器(Counter),還有匹配表項後需要對數據分組執行的動作表。
在這裏插入圖片描述

(2)分組頭域

分組頭域是數據分組匹配流表項時參照的依據,作用上類似於傳統交換機進行二層交換時匹配數據分組的MAC地址、路由器進行三層路由時匹配的IP地址。

OpenFlowv1.0中,流表項的分組頭域包括了12個字段,協議稱其爲 12元組(12-Tuple),它提供了一~四層的網絡控制信息,其中,交換機入端口(IngressPort)屬於一層的標識;源MAC地址(Ethersource)、目的MAC地址(Etherdst)、以太網類型(EtherType)、VLAN標籤(VLANid)、VLAN優先級(VLANpriority)屬於二層標識;源IP(IPsrc)、目的IP(IPdst)、

IP協議字段(IPproto)、IP服務類型(IPToSbits)屬於三層標識;TCP/UDP 源端口號(TCP/UDP srcport)、TCP/UDP 目的端口號(TCP/UDP dstport)屬於四層的標識。
在這裏插入圖片描述
在這裏插入圖片描述

每個元組有其對應的適用場景,數值的長度不盡相同,可以是一個確定的值,也可以爲“ANY”匹配任意值,其中的IP地址還可以指定子網掩碼以便完成更爲精確的匹配。需要指出的是,入端口(IngressPort)不屬於二~四層的概念,它是數據分組進入OF交換機的物理端口的標識,可看作數據分組在一層的標識。

(3)計數器

流表項中的計數器用來統計相關“流”的一些信息,例如查找次數、收發分組數、生存時間等。另外,OpenFlow針對每張表、每個流表項、每個端口、每個隊列也都會維護它們相應的計數器。
在這裏插入圖片描述
在這裏插入圖片描述

(4)動作表

動作表指定了 OF交換機處理相應“流”的行爲。相比於傳統網絡設備對數據分組只能進行較爲單一的轉發操作,流表項根據指定動作字段來指導 OF交換機如何處理“流”。動作表可以包含0個或多個動作,交換機會按照這些動作的先後順序依次執行,如果其中不包含轉發(Forward)動作的話,數據分組就會被丟棄掉。但是OpenFlowv1.0無法保證不同的數據分組的發送順序。動作可以分爲兩種類型:必選動作(RequiredAction)和可選動作(Optional

Action),必選動作是默認支持的,而交換機需要通知控制器它支持的可選動作。另外,當流表項中存在OF交換機不支持的動作時將向控制器返回錯誤消息。

在這裏插入圖片描述
在這裏插入圖片描述
根據支持的動作類型的不同,OpenFlow的交換機分爲兩類:

一類是OpenFlow專用交換機(OpenFlow-Only),另一類是支持OpenFlow的交換機(OpenFlow-Enabled)。前者不支持使用NORMAL端口對數據分組按照傳統二、三層策略轉發,後者則可以運行傳統的二、三層協議對特定的“流”進行處理。

在這裏插入圖片描述

爲了避免交換機互連可能導致的廣播風暴,一些 OF交換機會選擇支持生成樹協議(Spanning Tree Protocol,STP)。

OF交換機首先根據收到的數據分組解析出它的輸入端口、以太網源地址、目的地址和協議類型,根據以太網類型得到VLAN或三層IP的信息,再根據IP分組頭中的協議類型得到ICMP信息或四層的源、目的端口號;得到了數據分組的12元組,就可以用它與流表項中的分組頭域進行匹配。

在這裏插入圖片描述

nFlow

v1.0規定只要數據分組匹配上一條表項,就立即跳出匹配流程執行相應動作表,因此 OF

交換機要對控制器下發的流表項的匹配順序進行優化,分組頭域中確定的字段越多,就代表精度越高,應該優先進行匹配。例如,流表項A匹配目的IP地址爲1.0.0.1的數據分組,另一條流表項B匹配目的IP地址爲1.0.0.1,同時TCP目的端口號爲80的數據分組,那麼去往1.0.0.1的80端口的數據分組會優先被表項B處理,因爲相比於A來說B的精度更高,儘管兩條表項都是默認優先級。所以這裏的表N可理解爲由於各表項的分組頭域精度不同產生的匹配優先級,表0包括精準匹配(即沒有設置匹配掩碼位。關於掩碼,OpenFlow消息類型小節中對Flow-mod的介紹)的表項,匹配時它們具有最高優先級。

表N可理解爲由於各表項的分組頭域精度不同產生的匹配優先級,表0包括精準匹配(即沒有設置匹配掩碼位。關於掩碼,OpenFlow消息類型小節中對Flow-mod的介紹)的表項,匹配時它們具有最高優先級。

如果所有的流表項都無法與該數據分組匹配,則會被封裝爲Packet-in消息上交給控制器,封裝時一般只攜帶原始數據分組的分組頭控制信息,而其中的數據則被存在OF交換機的本地緩存中等待後續的處理。

OF交換機上對數據轉發邏輯的抽象,是交換機進行轉發策略控制的核心數據結構,交換芯片通過查找流表表項對進入交換機的網絡流量進行決策並執行合適的動作。流表的功能與傳統交換機中的二層MAC地址表、路由器中的三層IP路由表類似,但有別於傳統設備,流表可以同時包含更多層次的網絡特徵,而且是由網絡管理者通過控制器編程定義的,不再受限於隨設備出廠的操作系統。通過部署面向各種網絡服務的流表,一臺OF交換機可集交換、

路由、防火牆、網關等功能於一身,極大地提高了網絡部署的靈活性。

OpenFlow安全通道承載着OpenFlow協議的消息,

不管是流表的下發還是其他的控制消息都要經過這條通道。這部分流量屬於 OpenFlow

網絡的控制信令,有別於數據平面的網絡“流”,不需要經過交換機流表的檢查。爲了保證“本地流量”安全可靠的傳輸,OpenFlowv1.0中規定通道建立在TCP連接之上,採用TLS (Transport Layer Security,安全傳輸層協議)進行加密。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章