1. 程式人生 > >SDN--OpenFlow基礎學習

SDN--OpenFlow基礎學習

OpenFlow是一種用於controller和網路裝置之間通訊,被controler用來控制網路裝置,網路裝置用來反饋資訊的標準化南向藉口。OpenFlow還規定了網路裝置對報文的轉發和編輯方式。

一、OpenFlow的標準分析

1、交換機轉發平面

邏輯上有兩部分組成:Port埠和流表(Flow table)其中Port埠表示:跟Controller通訊的通道(controller channel)可以認為是一個特殊的Port

流:指在一段時間內,經過同一個網路的一些列具有相同屬性的順序傳送的報文集合。

流表:就是晶片中一張張的轉發表,每張流表都有很多的流表項(Flow Entry)組成。

流表項:是流表的最小單位,每條流表項對應了網路中傳輸的一條流。

流表項的6個組成部分:

MatchField:匹配欄位

Priority:(優先順序)

Counter:計數器

Instruction:指令

Timeout:(超時時間)

Cookie:附屬屬性;

2、controller和交換機之間的訊息分為三大類,分別是Controller-to-switch訊息,Asynchronous(非同步)訊息(也就是Switch-to-control)、Symmetric(對稱)訊息。

3.1Controller-to-switch訊息

訊息型別:

1)Feature

2)Configuration

3)Modify-state

4)Read-state

5)Packet-out

6)Barrier

7)Rolo-request

8)Asynchronous-configuration

3.2Asynchronous(非同步)訊息

1)packet-in

2)Flow-removed

3)Port-status

4)Error

3.3Symmetric(對稱)訊息

1)Hello

2)Echo

3)Experimenter

4、OpenFlow Channel(交換機通道)

OpenFlow Channel是指交換機跟Controller之間的連線通道,可以使帶外管理通道,也可以使帶內管理口,常用的是帶外管理口。連線可以使

TCP連線,也可以是TLS連線。使用TCP/TLS連線主要是為了保證可靠性。如果多個交換機跟多個Controller連線,那麼建立多條TCP/TLS連線。

5、Controller有三種角色

1)Master

2)Slave

3)Equal

6、Openflow系統性能指標

1)交換機處理頻寬---由晶片決定

2)流表項數量-------有晶片決定

3)流表項下發能力---每秒中能安裝多少條流表項;通過提高CUP主頻或優化軟體(主要是優先順序的排序)。

4)To-controller報文轉發--報文在交換機裡面匹配到某條流表項,這條流表項的動作是吧報文送到ControllerController經過處理之後可能會再把報文通過交換機轉發出去。效能取決於Controller和交換機兩個元素。

二、OpenFlow Controller和交換機工作流程

1)系統初始化

交換機系統初始化的時候,都會有預設的流表,流表裡面有一條預設的流表項。(預設的丟棄報文或所有報文都轉發給Controller

2)業務驅動Controller增加/刪除/修改流表項

Controller進行下發流表項,對流表項做一系列動作。

3)報文在交換機中轉發

報文根據交換機的配置去查詢指定流表,執行相應的指令。

三、Controller(控制器)

Controller是一個執行在獨立伺服器上的軟體程式,可以用不同的語言來實現,可以執行在不同的作業系統上。目前包括:SDN controllerOpenflow controller,其中Openflow controller只支援openflow一種南向介面協議去控制轉發裝置。

Controller屬性:

1) 北向介面:最簡單最傳統的北向幾口是CLISNMP、目前最流行的是REST API介面。

2) 南向介面:openflowSNMP/NetConfigOF-configXMPPLISPBGP-LS;

3) 控制方式:集中控制和分散式控制(Onix

4) 對物理和虛擬裝置的通用管理

5) 支援Openflow標準。

四:Ryn控制器

Ryn控制器是日本NTT一個實驗室發起的Controller專案。它是基於Python開發的,是唯一一個支援OpenFlow1.3的開源控制器。雲端計算平臺Openstack可以直接呼叫Ryu控制器來配置OVS