Giter Site home page Giter Site logo

tsunejui / learning-sdn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yanhaochen/learning-sdn

0.0 0.0 0.0 1.39 MB

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

Shell 10.64% Ruby 2.44% Python 69.70% Java 17.22%

learning-sdn's Introduction

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

參考

learning-sdn's People

Contributors

yanhaochen avatar yungshenglu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.