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之間的連線通道,可以使帶外管理通道,也可以使帶內管理口,常用的是帶外管理口。連線可以使
5、Controller有三種角色
1)Master
2)Slave
3)Equal
6、Openflow系統性能指標
1)交換機處理頻寬---由晶片決定
2)流表項數量-------有晶片決定
3)流表項下發能力---每秒中能安裝多少條流表項;通過提高CUP主頻或優化軟體(主要是優先順序的排序)。
4)To-controller報文轉發--報文在交換機裡面匹配到某條流表項,這條流表項的動作是吧報文送到Controller,Controller經過處理之後可能會再把報文通過交換機轉發出去。效能取決於Controller和交換機兩個元素。
二、OpenFlow Controller和交換機工作流程
1)系統初始化
交換機系統初始化的時候,都會有預設的流表,流表裡面有一條預設的流表項。(預設的丟棄報文或所有報文都轉發給Controller)
2)業務驅動Controller增加/刪除/修改流表項
Controller進行下發流表項,對流表項做一系列動作。
3)報文在交換機中轉發
報文根據交換機的配置去查詢指定流表,執行相應的指令。
三、Controller(控制器)
Controller是一個執行在獨立伺服器上的軟體程式,可以用不同的語言來實現,可以執行在不同的作業系統上。目前包括:SDN controller和Openflow controller,其中Openflow controller只支援openflow一種南向介面協議去控制轉發裝置。
Controller屬性:
1) 北向介面:最簡單最傳統的北向幾口是CLI、SNMP、目前最流行的是REST API介面。
2) 南向介面:openflow、SNMP/NetConfig、OF-config、XMPP、LISP、BGP-LS;
3) 控制方式:集中控制和分散式控制(Onix)
4) 對物理和虛擬裝置的通用管理
5) 支援Openflow標準。
四:Ryn控制器
Ryn控制器是日本NTT一個實驗室發起的Controller專案。它是基於Python開發的,是唯一一個支援OpenFlow1.3的開源控制器。雲端計算平臺Openstack可以直接呼叫Ryu控制器來配置OVS。