Skip to content

SDN 學習及實作範例。(因個人職涯關係,已不再維護,請見諒。)

Notifications You must be signed in to change notification settings

LichUnHappy/SDN101

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SDN-tutorial

SDN(Software-defined networking,軟體定義網路)是一個相當大的架構,字面上雖然簡單,但這一切最有問題的地方是在於「如何實作軟體定義網路」。要學會實作 SDN ,最重要的是瞭解 SDN 整體的架構,也因為 SDN 並非單一單元,如果缺失其中一個單元的瞭解,在最後的設計上,將會綁手綁腳、無從下手。在此,我將 SDN 分為三個單元,分別為:

  • Switch(連接設備,屬於 Data Plane)

  • 協定(Switch 的運作規則、Switch 與 Controller 之間的溝通)

  • Controller(定義 Switch 的運作規則及整體網路邏輯,屬於 Control Plane)

在學習的項目上又分為四個部分(依順序排列):

  1. 協定

  2. Switch

  3. 虛擬網路環境(Mininet)

  4. Controller

初學者入門建議

  1. 什麼是 OpenFlow?:SDN 設備間溝通的方式
  2. 安裝 OVS:為實際執行 OpenFlow 做準備
  3. 利用 OVS 熟習 OpenFlow:手動當 Controller 的角色
  4. 安裝 Mininet:建立模擬環境,及與 Controller 連結做準備
  5. 熟悉 Mininet:瞭解 Mininet 在做什麼
  6. 以程式碼建立 Mininet 環境:學習虛擬環境連結 Controller 的方式
  7. 安裝 Ryu Controller:為學習 Controller 做準備
  8. 撰寫第一隻 Controller 程式
  9. 學習利用 Controller 規劃轉送邏輯
  10. 比較像樣的路徑配置方式:Shortest Path

其餘章節,讀者可以依需求閱讀。每個項目都會有一個目錄(如:Ryu)讀者可以透過目錄,找尋自己有興趣的內容閱讀。

實驗專區

此部分的文章,主要談論實驗環境的建立方式。

實際設備操作

使用到的套件

  • Mininet(虛擬網路環境)
  • Open vSwitch(虛擬 Switch)
  • Ryu(SDN Controller)
  • Vagrant(建立虛擬系統環境)
  • GtkTerm(連接週邊硬體)

硬體設備

  • Pica8 P-3297

參考

About

SDN 學習及實作範例。(因個人職涯關係,已不再維護,請見諒。)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 69.8%
  • Java 17.2%
  • Shell 10.6%
  • Ruby 2.4%