本文基於SDN原理視頻而成:SDN原理
##OpenFlow
OpenFlow 協議 和 傳統的路由選擇協議 有很多相似的地方,同時在某些地方也具有一定的顛覆性。
路由表,由IP地址和子網掩碼組成。MAC表,由MAC地址組成。 但是OpenFlow協議的流表,卻什么都有。
OpenFlow 相比傳統路由協議來說,更大更廣泛;是一種推倒重來的做法。
###功能
OpenFlow 1.0
OpenFlow 1.3 及 更新的版本
相比1.0,1.3的OpenFlow交換機支持 多流表,多控制器,主表,計量表等等。
主要功能:
- 用於實現 Controller 和 Switch 的通信,定義了一系列的標准術語。
- 定義了 Controller 如何來控制 Switch 以及 Switch 如何來反饋 Controller。
- 定義了 Controller 和 Switch 通信過程中的 消息類型和格式。
###發展 版本
##流表 FlowTable --- OpenFlow的核心
如果拿傳統網絡中的技術來類比流表,那么流表就相當於 路由選路中的路由表,交換機中的MAC地址表;有了流表,交換機才能進行轉發工作。
傳統的路由表,MAC地址表 無法按需更改,不可編程化;現在的OpenFlow協議支持多張流表,一個交換機可能有幾張流表,相比傳統的交換機,多流表增加了交換機工作的復雜性:什么時候選擇什么樣的流表。
在SDN網絡中,經常會發送的一件事情是,有需要來對流表表項進行修改,或者是當一個數據報經過一個OpenFlow的交換機的時候,能夠對它的源/目的IP地址,源/目的MAC地址進行修改,導致它選擇不同的路徑。傳統的流表,無論是靜態路由表還是動態路由表均不支持;而SDN網絡交換機的流表 需要支持 可修改化,可編程化。
因此,介紹流表,從以下五個方面介紹:
- 流
- 流表
- 流表項
- 流表匹配
- 如何生成流表?
在學習過傳統網絡之后,學習以上的五個內容,就是一個不斷進行 對比 的過程。
###問題1:流 Flow
(1)流 一般由網絡管理員來進行定義,根據不同的流執行不同的策略。
(2)流:同一時間,經過同一個網絡,具有相同屬性的數據報集合。
- 這里的相同屬性,根據不同的情況,可以不同;比如我們可以定義 目的IP地址相同 的數據報集合為一個流,也可以定義 同一個協議為一個流,或者 同一個源IP地址為一個流。
(3)在SDN網絡中,所有的數據都以 流 為基本單位進行處理
目前,一般情況下,我們都以源/目的IP地址,或者是端口號 定義流的相同屬性。
###問題2:流表 Flow Table
注意:流經過一個交換機之后,最后結果和傳統的路由器相類似:轉發,或者丟棄。 但是,如果一個交換機同時擁有多張流表,那么比起傳統路由器 查完唯一的一張路由表 以外,還有第三種選擇:繼續查下一張表。
當一個流來到一個運行OpenFlow協議的交換機的時候,開始查表;基於序號的查找:根據表項的序號來進行查找。每一張Table中都有詳細的表項。
(1)流表就是交換機的一張轉發表;類比於 傳統網絡路由器的路由表,交換機的MAC地址表/CAM表。
(2)流表由一系列連續的表項(路由條目)組成。
(3)除了OpenFlow1.0版本之外,后續版本中,OpenFlow支持多流表。
####問題:目前的OpenFlow支持200+流表,那么比起 傳統網絡路由器/交換機只需要找一張表 來看 速度肯定會更慢啊?
快和慢是一個相對的概念,傳統網絡的路由表是僅需要查找一張表,但是它們采用的模式是 ”接力棒模式“ 或者說 分布式交互,路由更新的時間十分緩慢,路由匯聚的時間長;而SDN網絡所有的路徑選擇,生成流表 以及相關的控制措施,都是由控制層來實現的,轉發層只負責轉發,並不需要生成流表,流表由控制器提供。交換機和交換機之間並不需要多的溝通。 因此,看上去SDN網絡交換機的流表更多,需要查找的表項更多,但 整體的時間 是小於 傳統交互式網絡的路由時間 的。
2016/9/5