1. 程式人生 > >openflow 和 sdn (軟體定義網路) 原理和教程

openflow 和 sdn (軟體定義網路) 原理和教程

OpenFlow概述

OpenFlow簡介

  通俗的講,OpenFlow是使用類似於API程序配置網路交換機的協議。OpenFlow的思路很簡單,網路裝置維護一個FlowTable並且只按照FlowTable進行轉發,FlowTable本身的生成、維護、下發完全由外接的Controller來實現,注意這裡的FlowTable並非是指IP五元組,事實上OpenFlow 1.0定義了包括埠號、VLAN、L2/L3/L4資訊的10個關鍵字,但是每個欄位都是可以通配的,網路的運營商可以決定使用何種粒度的流,比如運營商只需要根據目的IP進行路由,那麼流表中就可以只有目的IP欄位是有效的,其它全為通配。
  如下圖所示為支援OpenFlow協議裝置的網路結構:
  圖1 基於OpenFlow協議的網路結構   
  這種控制和轉發分離的架構對於L2交換裝置而言,意味著MAC地址的學習由Controller來實現,V-LAN和基本的L3路由配置也由Controller下發給交換機。對於L3裝置,各類IGP/EGP路由執行在Controller之上,Controller根據需要下發給相應的路由器。流表的下發可以是主動的,也可以是被動的,主動模式下,Controller將自己收集的流表資訊主動下發給網路裝置,隨後網路裝置可以直接根據流表進行轉發;被動模式是指網路裝置收到一個報文沒有匹配的FlowTable記錄時,將該報文轉發給Controller,由後者進行決策該如何轉發,並下發相應的流表。被動模式的好處是網路裝置無需維護全部的流表,只有當實際的流量產生時才向Controller獲取流表記錄並存儲,當老化定時器超時後可以刪除相應的流表,故可以大大節省TCAM空間。當一個Controller同時控制多個交換機/路由器裝置時,它們看起來就像一個大的邏輯交換機,各個交換機/路由器硬體就如同這個邏輯網路裝置的遠端線卡。
  

OpenFlow交換機組成

  OpenFlow交換機由流表、安全通道和OpenFlow協議三部分組成:
圖2 OpenFlow交換機組成

OpenFlow交換機是整個OpenFlow網路的核心部件,主要管理資料層的轉發。OpenFlow交換機接收到資料包後,首先在本地的流表上查詢轉發目標埠,如果沒有匹配,則把資料包轉發給Controller,由控制層決定轉發埠。

  流表由很多個流表項組成,每個流表項就是一個轉發規則。進入交換機的資料包通過查詢流表來獲得轉發的目的埠。流表項由頭域、計數器和操作組成;其中頭域是個十元組,是流表項的標識;計數器用來計數流表項的統計資料;操作標明瞭與該流表項匹配的資料包應該執行的操作。

  安全通道是連線OpenFlow交換機到控制器的介面。控制器通過這個介面控制和管理交換機,同時控制器接收來自交換機的事件並向交換機發送資料包。交換機和控制器通過安全通道進行通訊,而且所有的資訊必須按照OpenFlow協議規定的格式來執行。  OpenFlow協議用來描述控制器和交換機之間互動所用資訊的標準,以及控制器和交換機的介面標準。協議的核心部分是用於OpenFlow協議資訊結構的集合。

  OpenFlow協議支援三種資訊型別:Controller-to-SwitchAsynchronousSymmetric,每一個型別都有多個子型別。Controller-to-Switch資訊由控制器發起並且直接用於檢測交換機的狀態。Asynchronous資訊由交換機發起並通常用於更新控制器的網路事件和改變交換機的狀態。Symmetric資訊可以在沒有請求的情況下由控制器或交換機發起。

SDN概述

什麼是SDN

  軟體定義網路(Software Defined Network, SDN),是由美國斯坦福大學clean slate研究組提出的一種新型網路創新架構,SDN 技術就相當於把每人家裡路由器的的管理設定系統和路由器剝離開。以前我們每臺路由器都有自己的管理系統,而有了SDN之後,一個管理系統可用在所有品牌的路由器上。如果說現在的網路系統是功能機,系統和硬體出廠時就被捆綁在一起,那麼SDN 就是Android系統,可以在很多智慧手機上安裝、升級、使用,同時還能安裝更多更強大的手機 App(SDN 應用層部署)。

SDN原理

  SDN的設計理念是將網路的控制面與資料轉發面進行分離,並實現可程式設計化控制。SDN的典型架構共分三層,最上層為應用層,包括各種不同的業務和應用;中間的控制層主要負責處理資料平面資源的編排,維護網路拓撲、狀態資訊等;最底層的基礎設施層負責基於流表的資料處理、轉發和狀態收集。 圖3 SDN網路結構   
  從傳統的網路裝置(路由器,交換機)的設計上看,它由軟體控制和硬體資料通道組成。軟體控制包括管理(CLI,SNMP)以及路由協議(OSPF,ISIS,BGP)等。資料通道包括針對每個包的查詢、交換和快取。此時如果將網路中所有的網路裝置視為被管理的資源,那麼參考作業系統的原理,可以抽象出一個網路作業系統(Network OS)的概念,這個網路作業系統一方面抽象了底層網路裝置的具體細節,同時還為上層應用提供了統一的管理檢視和程式設計介面。這樣,基於網路作業系統這個平臺,使用者可以開發各種應用程式,通過軟體來定義邏輯上的網路拓撲,以滿足對網路資源的不同需求,而無需關心底層網路的物理拓撲結構。

SDN的好處

  SDN本質上具有“控制和轉發分離”、“裝置資源虛擬化”和“通用硬體及軟體可程式設計”三大特性,這帶來了一系列的好處。
  第一,裝置硬體歸一化,硬體只關注轉發和儲存能力,與業務特性解耦,可以採用相對廉價的商用的架構來實現。
  第二, 網路的智慧性全部由軟體實現,網路裝置的種類及功能由軟體配置而定,對網路的操作控制和執行由伺服器作為網路作業系統(NOS)來完成。
  第三, 對業務響應相對更快,可以定製各種網路引數,如路由、安全、策略、QoS、流量工程等,並實時配置到網路中,開通具體業務的時間將縮短。

SDN的三大要素

  1. 轉發與控制分離,這使得網路交換機的資料轉發變得更加簡單、快速;同時,控制變成了網路作業系統中一個相對集中的邏輯功能。
  2. OpenFlow協議,它向交換機傳送轉發表,交換機依此轉發報文。這種做法與傳統網路完全不同。在傳統網路架構中,交換機和路由器需要自己決定報文的轉發路徑,這可能會給網路運營商帶來一些不可預知的負面影響,包括成本增加、效能降低、上市時間延緩 等。有了SDN,控制軟體決定報文的轉發路徑,使得運營商可以“隨心所欲”地控制網路。
  3. 具有一致性的、全系統範圍的網路作業系統可程式設計介面,它能讓網路實現真正意義上的可程式設計或者軟體定義。如果不能實現轉發與控制分離,那麼幾乎所有SDN所能帶來的好處都無法體現;如果能實現轉發和控制分離,但沒有OpenFlow協議,那麼就需要通過其它途徑,將所需要的流量表資訊傳遞給交換機。OpenFlow就是實現這一功能的行業標準。