☞Openflow消息總共分為三大類:
1、Controller‐to‐Switch
控制器至交換機消息此類消息由控制器主動發出
Features 用來獲取交換機特性
Configuration 用來配置Openflow交換機
Modify‐State 用來修改交換機狀態(修改流表)
Read‐Stats 用來讀取交換機狀態
Send‐Packet 用來發送數據包
Barrier 阻塞消息
2、Asynchronous
異步消息此類消息由交換機主動發出
Packet‐in 用來告知控制器交換機接收到數據包
Flow‐Removed 用來告知控制器交換機流表被刪除
Port‐Status 用來告知控制器交換機端口狀態更新
Error 用來告知控制器交換機發生錯誤
3、Symmetric
對稱消息,可以由控制器或交換機主動發起
Hello 用來建立Openflow連接
Echo 用來確認交換機與控制器之間的連接狀態
Vendor 廠商自定義消息
☞Openflow消息格式
Openflow協議數據包由Openflow Header和Openflow Message兩部分組成
Openflow header的結構:
Openflow Message結構與具體消息類型有關:
Openflow消息類型:
☞Openflow Channel
openFlow Channel是指交換機跟Controller之間的連接通道,可以是外帶管理通道(交換機面板上跟Console口在一起的那個單獨的Ethernet端口,物理上跟業務端口分離),也可以是帶內管理口(復用業務端口),現在常見的都是帶外管理口,主要原因是簡單,用帶內口需要配置交換芯片和協議棧。
openFlow Channel連既可以是TCP連接,也可以是加密的TLS連接,由設備商或者用戶自行決定用哪種。使用TCP/TLS連接主要是為了保證可靠性。如果交換機連接了多個Controller,那么會創建多條TCP/TLS連接。
☞Controller角色和選舉
一台openFlow交換機可以同時連接到多個Controller,這些Controller有三種角色,分別是Master、Slave和Equal。
Master----一台交換機連接到的所有Controller中,只有一個Master,它對交換機擁有完全的操作控制權。
Slave-----一台交換機所連接到的所有Controller中,可以有多個Slave,它們對交換機只有讀取交換機狀態和被動收取交換機消息的權限,不能對交換機進行配置,一旦Master宕掉,其中一台Slave就會被選舉為Master。每個Slave可以接收不同的消息類型,從而在多個Slave之間進行負載分擔。
Equal----又的網絡中可能希望有多個Controller都能對交換機進行配置,以便進行負載分擔。這種情況下這些Controller可以被配置為Equal角色,一台交換機允許同時連接到多個Equal角色的Controller,這些Controller對交換機擁有和Master一樣的功能。
這些角色初始的時候都是管理員配置的。當Master出故障后,Slave可以通過選舉的方式變為Master。交換機沒有決定權。OpenFlow標准並沒有定義如何進行選舉。