OpenFlow 軟體定義網路 SDN 交換器 路由器 網路 協定

慢動作分解交換機運作 OpenFlow原理不再霧煞煞

2016-06-15
上一篇文章介紹了應用在路由器與交換機之轉發平面與控制平面的運作方式,這些知識是大家進而了解軟體定義網路(SDN)的基礎。接下來,本文將說明網路交換機的運作模式,並介紹應用在網路交換機上的OpenFlow協定。
Open Network Foundation這個組織主要在推動軟體定義網路相關的技術,他們也提供兩種不同的認證給大家取得,如圖4所示。


▲圖4 Open Network Foundation所推出的認證。

第一個是ONF Certified SDN Associate認證,這個認證主要提供給負責市場行銷、業務專員、售後技術服務人員或是基本技術人員所取得的認證,以確保這些人擁有對於軟體定義網路技術有基本的認知,這個認證也簡稱OCSA。目前這個認證的版本號碼為OCSA-110,考試時間為一個小時,必須回答四十?個問題,考試費用為150美元。

第二個是ONF Certified SDN Engineer認證,這個認證是今年才推出,預計在今年4月的NFV World Congress大會中會推出測試版的題目,而最終版測試內容與細節將會在今年下半年推出。這個認證不只要求測試者擁有對於軟體定義網路基本的概念認知,還要求必須擁有實際的操作設定與規劃的經驗,這個認證簡稱為OCSE,相當於OCSA的進階版。目前這個OCSE認證的最新號碼為OCSE-111,考試時間為一個半小時,必須回答七十?個問題,考試費用為240美元。

OpenFlow包含元件

一般來說,一個支援OpenFlow協定的交換機會包含幾個元件,如圖5所示。這些包含的元件有一個Group Table和多個Flow Table。而交換機會與圖5上方的Controller溝通,這個Controller再透過OpenFlow協定與OpenFlow Channel溝通。


▲圖5 支援OpenFlow協定之交換機所包含的元件。

在Flow Table中包含多筆所謂的Flow Entry資料,每一筆Flow Entry包含著符合條件的內容、計數器以及針對符合的網路封包所要下達的指令(Instruction)等等,而透過OpenFlow協定,Controller可以新增、修改以及刪除這些Flow Entry的內容。

Flow Table

當網路封包抵達網路交換機時,就會開始根據Flow Table中的內容嘗試去比對符合的條件,Flow Table內的所有筆資料是有前後優先順序的,而Flow Table各個表格之間也會有優先順序。一旦找到相符的Flow Entry,就會去執行Flow Entry中所設定好的動作指令。

如果在某一個Flow Table中都沒有找到符合的Flow Entry,則會根據預先設定好的預設值執行動作指令,這預先設定好的動作可能是尋找下一個Flow Table的內容,或是直接丟棄,或者轉給OpenFlow Channel來處理。

動作指令

剛才提到每一筆Flow Entry都會有相對應的動作指令,一旦找到符合的Flow Entry,就會執行相對應的動作指令。而動作指令內容可以是一般的動作(Action)或是所謂的Pipeline Processing。

一般的動作指令可能是轉發網路封包,或是修改網路封包內容,而Pipeline Processing代表的是讓下一個Flow Table來處理,當然網路封包相關的資訊也都會被傳到下一個Flow Table。如果Pipeline Processing並沒有指定下一個要處理的Flow Table的話,就不會丟到下一個Flow Table,通常這種時候都會直接對這個網路封包做處理。

這裡的動作甚至可以把網路封包轉給Group來處理。一個Group可以包含多個複雜的處理過程,這些處理過程可能是Flooding、Multi-path Forwarding,或是Fast Reroute,或者Link Aggregation等等。Group甚至可以將多個不同的Flow Entry透過同樣的處理過程來對網路封包做相同的處理動作。

這種設計方式可以讓Flow Entry與所要處理的過程再次地分開來,這樣一來,如果希望針對多個不同的Flow Entry一次性地更改相對應的處理動作,就會方便非常多。

Group Table

與Flow Table一樣,Group Table包含許多Group Entry。而每一個Group Entry包含多個Action Bucket,這些Action Bucket會組成一個清單,而這些Action Bucket會根據各個Group種類而不同。一旦網路封包送到指定的Group,一個或多個相對應的Action Bucket中的動作就會被執行。

埠的處理

Flow Entry的動作中可能會指定要轉發到指定的「埠」(Port),這裡的埠可以是實體在網路交換機上面的埠,也有可能是虛擬的埠,或是保留的埠。保留的埠可能可執行網路封包的轉發,或者丟到Controller,或轉發到所有其他的埠,也就是所謂的Flooding,甚至透過不是使用OpenFlow協定的方式來處理。

軟體定義網路與OpenFlow協定

現在大家應該知道網路交換機在網路中扮演的角色和運作方式,接著也談了OpenFlow協定大致的內容,可是這些跟軟體定義網路有什麼關係呢?什麼又是軟體定義網路呢?這裡談的OpenFlow協定就是SDN最主要的控制協定,SDN全名為Software Defined Network,中文一般稱為「軟體定義網路」,是一種網路控制虛擬化的技術。

簡單來說,SDN將路由器或交換機的控制方式與路由器或交換機分離,允許網路管理人員用遠端的方式,透過撰寫的軟體來控制路由器或交換機,藉此規劃網路、控制網路流量,而且整個過程不需要更改硬體的規劃。

再來要知道的就是轉發平面,或是轉發介面,英文是Forwarding Plane。所謂的Forwarding Plane就是在路由器或交換機架構中處理送進來的網路封包,並且藉由查找資料庫來決定接下來要把網路封包轉發到哪一個網路介面。

Forwarding Plane有時候也被稱為Data Plane或者是User Plane。而這個轉發平面只會處理Inbound介面進來的網路封包。OpenFlow協定用於控制路由器或交換機的轉發平面,來達到以軟體來定義網路的目的。

結語

這一篇文章是從網路交換機的角度來了解交換機運作的原理與方式,以及在網路上所扮演的角色。並且講解了OpenFlow協定,讓大家了解支援OpenFlow協定的交換機內部應該會包含哪些元件,以及每一個元件的意義,同時也介紹了Open Networking Foundation這個組織與OpenFlow協定的關係以及相關的網路認證。等了解這些細節之後,最後回過頭來說明OpenFlow協定與軟體定義網路的關係。

這裡提供了大方向,讓大家在最短的時間內了解軟體定義網路與OpenFlow協定的關係,至於每個元件的細節和運作的方式,未來的文章會再一一為各位詳加介紹。

<本文作者:胡凱智,前在美商Mozilla擔任全球技術專案總監,同時擔任全球開放式網路設備(Open Web Device)協議審查董事會(Compliance Review Board)的技術主席(Technical Committee Chairman)。曾於趨勢科技任職七年多,有兩年美國矽谷工作經驗,在美國專利局擁有軟體專利。讀者交流建議:https://www.facebook.com/khu.page>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!