OpenFlow 是SDN Controller plane與Infastructure plane 溝通的協定,可以透過OpenGFlow協定,定義Infastructure 的規則,何種類型的封包應該做怎樣的處理。
Flow:同一時間內,經過同一網路具有相同屬性的順序發送封包集合。
Flow Table:封包進入Swtich後,第一個遇到的就是Flow Table,Flow Table存放封包的轉送規則(Flow Entry)
Flow Entry:Flow Entry也就是我們所定義的轉發規則,在規則中,我們會對符合條件的規則(Match)做相應的動作(Actiion)
每一個Flow Entry 的條目中,帶有下列六種欄位
Match fields
包括封包本身的資訊或是封包關聯欄位,同一張Flow Table中,不同Flow Entry的Match Fields可以是相同的。
Priority
Flow Entry 被執行的優先權,當Priority越高,則封包會越先與此Flow Entry比較。
Counters
原則上每一個Entry對應一個Counter,用來計數網路資料的傳輸,例如收到多少封包、多少位元組、多少錯誤的封包等統計資料。
Instructions
每個Flow Entry都包含一組指令,這些指令在數據包與條目匹配時執行。這些指令導致封包,Action Set和或Pipline處理的改變。Switch不需要支持所有的指令類型。
Timeouts
Idle Timeout:Counter 會記錄最後匹配Flow的時間,如果超過就刪除Flow。
Hard Timeout:Counter 會記錄Flow產生的時間,一旦超過就摻除Flow。
Cookie
用於在Controller和Switch之間傳遞Flow Entry的相關操作,僅使用於Controller和Switch之間的訊息溝通。