logo资料库

Ryubook.pdf

第1页 / 共166页
第2页 / 共166页
第3页 / 共166页
第4页 / 共166页
第5页 / 共166页
第6页 / 共166页
第7页 / 共166页
第8页 / 共166页
资料共166页,剩余部分请下载后查看
前言
交換器( Switching Hub )
Switching Hub
OpenFlow 實作的交換器
在 Ryu 上實作交換器
執行 Ryu 應用程式
本章總結
流量監控( Traffic Monitor )
定期檢查網路狀態
安裝 Traffic Monitor
執行 Traffic Monitor
本章總結
REST API
整合 REST API
安裝包含 REST API 的 Switching Hub
安裝 SimpleSwitchRest13 class
安裝 SimpleSwitchController Class
執行包含 REST API 的 Switching Hub
本章總結
網路聚合( Link Aggregation )
網路聚合( Link Aggregation )
執行 Ryu 應用程式
實作 Ryu 的網路聚合功能
本章總結
生成樹( Spanning Tree )
Spanning Tree
執行 Ryu 應用程式
使用 OpenFlow 完成生成樹
使用 Ryu 實作生成樹
本章總結
OpenFlow 通訊協定
Match
Instruction
Action
ofproto 函式庫
簡單說明
相關模組
基本使用方法
封包函式庫
基本使用方法
應用程式範例
OF-Config 函式庫
OF-Config 通訊協定
函式庫架構
使用範例
防火牆( Firewall )
Single tenant 操作範例
Multi tenant 操作範例
REST API 列表
路由器( Router )
Single Tenant 的操作範例
Multi-tenant 的操作範例
REST API 列表
OpenFlow 交換器測試工具
測試工具概要
使用方法
測試工具使用範例
組織架構
應用程式開發模型( Application programming model )
協助專案開發
參與專案
開發環境
送交更新的程式碼
應用案例
Stratosphere SDN Platform (Stratosphere)
SmartSDN Controller( NTT COMWARE )
SDN FrameworkRYUUsing OpenFlow 1.3RYU project team
Contents 前言 1 交換器(Switching Hub ) 1.1 Switching Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 OpenFlow 實作的交換器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 在 Ryu 上實作交換器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 執行 Ryu 應用程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 本章總結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 流量監控(Traffic Monitor ) 2.1 定期檢查網路狀態 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 安裝 Traffic Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 執行 Traffic Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 本章總結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 REST API 3.1 整合 REST API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 安裝包含 REST API 的 Switching Hub . . . . . . . . . . . . . . . . . . . . . . . 3.3 安裝 SimpleSwitchRest13 class . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 安裝 SimpleSwitchController Class . . . . . . . . . . . . . . . . . . . . . . . . 3.5 執行包含 REST API 的 Switching Hub . . . . . . . . . . . . . . . . . . . . . . . 3.6 本章總結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 網路聚合(Link Aggregation ) 4.1 網路聚合(Link Aggregation ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 執行 Ryu 應用程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 實作 Ryu 的網路聚合功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 本章總結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 生成樹(Spanning Tree ) 5.1 Spanning Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 執行 Ryu 應用程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 使用 OpenFlow 完成生成樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 使用 Ryu 實作生成樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 本章總結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 OpenFlow 通訊協定 6.1 Match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 3 3 6 14 20 21 21 21 27 29 31 31 31 33 34 36 38 39 39 39 50 59 61 61 63 74 75 84 85 85 i
6.2 Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 ofproto 函式庫 7.1 簡單說明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 相關模組 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 基本使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 封包函式庫 8.1 基本使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 應用程式範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 87 89 89 89 90 93 93 95 9 OF-Config 函式庫 99 99 9.1 OF-Config 通訊協定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 函式庫架構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 9.3 使用範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 10 防火牆(Firewall ) 103 10.1 Single tenant 操作範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 10.2 Multi tenant 操作範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.3 REST API 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 11 路由器(Router ) 119 11.1 Single Tenant 的操作範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 11.2 Multi-tenant 的操作範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 11.3 REST API 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 12 OpenFlow 交換器測試工具 143 12.1 測試工具概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 12.2 使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 12.3 測試工具使用範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 13 組織架構 157 13.1 應用程式開發模型(Application programming model ) . . . . . . . . . . . . . 157 14 協助專案開發 159 14.1 參與專案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 14.2 開發環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 14.3 送交更新的程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 15 應用案例 161 15.1 Stratosphere SDN Platform (Stratosphere) . . . . . . . . . . . . . . . . . . . . 161 15.2 SmartSDN Controller(NTT COMWARE ) . . . . . . . . . . . . . . . . . . . . . 161 ii
前言 本書是給那些使用 Ryu 作為開發的框架,而目的是為了實現軟體定義網路(Software Defined Networking,SDN )而寫的一本參考書。 那麼為什麼要選擇 Ryu 作為開發平台呢? 我們衷心的希望您可以在本書中找到解答。 建議您依照本書的章節,依序的閱讀第 1 章至第 5 章。首先第 1 章是 Simple Switch 的實作, 接著後面的章節是流量監控(Traffic Monitor )以及網路聚合(Link Aggregation )。透過實際的 例子,我們將介紹 Ryu 的程式是如何運作的。 第 6 章到第 9 章,我們將詳細的說明 OpenFlow 通訊協定(OpenFlow Protocol )以及封包函數 的使用方法。接著第 10 章到第 12 章,我們會討論如何使用 Ryu 內建的防火牆(Firewall )和 測試工具(test tool )來開發應用程式。第 13 到 15 章將介紹 Ryu 的架構(architecture )及 實際應用案例。 最後,我們非常感謝您對於 Ryu 專案的青睞及支持,特別對於 Ryu 的使用者而言。希望在不久 的將來能有機會在 Mailing List 上得到來自于您的寶貴意見,讓我們一起加入 Ryu 專案並進行 開發吧。 繁體中文版本是由台灣資訊工業策進會- SDN 團隊協助整理及翻譯,除了不吝批評與指教之 外也歡迎更多朋友加入,讓中文讀者可以更快更即時的了解 Ryu 這個優秀的開放原始碼的框 架。 1
Contents 2
CHAPTER 1 交換器(Switching Hub ) 本章將會用簡單的 Switching hub 安裝做為題材,說明 Ryu 如何安裝一個應用程式。 1.1 Switching Hub 在交換器中有許許多多的功能。在這邊我們將看到擁有下列簡單功能的交換器。 X 學習連接到連接埠的 host 之 MAC 位址,並記錄在 MAC 位址表當中。 X 對於已經記錄下來的 MAC 位址,若是收到送往該 MAC 位址的封包,則轉送該封包到相 對應的連接埠。 X 對於未指定目標位址的封包,則執行 Flooding。 讓我們使用 Ryu 來實現這樣一個交換器吧。 1.2 OpenFlow 實作的交換器 OpenFlow 交換器會接受來自于 controller 的指令並達到以下功能。 X 對於接收到的封包進行修改或針對指定的連接埠進行轉送。 X 對於接收到的封包進行轉送到 Controller 的動作(Packet-In )。 X 對於接收到來自 Controller 的封包轉送到指定的連接埠(Packet-Out )。 上述的功能所組合起來的就是一台交換器的實現。 首先,利用 Packet-In 的功能來達到 MAC 位址的學習。Controller 使用 Packet-In 接收來自交換 器的封包之後進行分析,得到連接埠相關資料以及所連接的 host 之 MAC 位址。 在學習之後,對所收到的封包進行轉送。將封包的目的位址,在已經學習的 host 資料中進行檢 索,根據檢索的結果會進行下列處理。 X 如果是已經存在記錄中的 host:使用 Packet-Out 功能轉送至先前所對應的連接埠 X 如果是尚未存在記錄中的 host:使用 Packet-Out 功能來達到 Flooding 下面將一步一步的說明並附上圖片以幫助理解。 1. 初始狀態 3
Chapter 1. 交換器(Switching Hub ) Flow table 為空白的狀況。 將 host A 接到連接埠 1,host B 接到連接埠 4,host C 接到連接埠 3。 2. host A ! host B 當 host A 向 host B 發送封包。這時後會觸發 Packet-In 訊息。host A 的 MAC 位址會被連接埠 1 給記錄下來。由於 host B 的 MAC 位址尚未被學習,因此會 進行 Flooding 並將封包往 host B 和 host C 發送。 Packet-In: in-port: 1 eth-dst: host B eth-src: host A Packet-Out: action: OUTPUT: Flooding 3. host B ! host A 封包從 host B 向 host A 返回時,在 Flow table 中新增一筆 Flow Entry,並將封 包轉送到連接埠 1。因此該封包並不會被 host C 收到。 4 1234Host AHost CHost BMAC address tableFlow table1234Host AHost CHost BMAC address tableFlow tableHost A: Port 1
分享到:
收藏