logo资料库

Ryu:SDN Framework.pdf

第1页 / 共163页
第2页 / 共163页
第3页 / 共163页
第4页 / 共163页
第5页 / 共163页
第6页 / 共163页
第7页 / 共163页
第8页 / 共163页
资料共163页,剩余部分请下载后查看
前言
交換器( 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 )
Using OpenFlow 1.3 RYU SDN Framework RYU project team
Contents 前言 1 交換器(Switching Hub ) . . . . . . 1.1 1.2 1.3 在 Ryu 上實作交換器 . 1.4 執行 Ryu 應用程式 . . 1.5 本章總結 . . . Switching Hub . . OpenFlow 實作的交換器 . . . . . . . . . . . 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 ) . Spanning Tree . . . 5.1 . . 5.2 執行 Ryu 應用程式 . . 5.3 使用 OpenFlow 完成生成樹 . 5.4 使用 Ryu 實作生成樹 . . 5.5 本章總結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 OpenFlow 通訊協定 . Match . 6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 3 3 5 14 19 21 21 21 27 29 31 31 31 33 34 36 38 39 39 39 50 59 61 61 63 73 74 83 85 85
. . . . . . . 86 87 89 89 89 90 93 93 95 99 99 . . 99 . 100 101 . 101 . 110 . 114 117 . 117 . 127 . 139 141 . 141 . 143 . 146 155 . 155 157 . 157 . 157 . 158 159 . 159 . 159 6.2 6.3 Instruction . . Action . . . . . . . . 7 ofproto 函式庫 7.1 簡單說明 . . 7.2 相關模組 . . 7.3 基本使用方法 . . . 8 封包函式庫 8.1 基本使用方法 . 8.2 應用程式範例 . 9 OF-Config 函式庫 . . . . . . . . . . . . . . . . . . . . . 9.1 9.2 函式庫架構 . 9.3 使用範例 . . OF-Config 通訊協定 . . . . . . . . . . . . . . . . . . . 10 防火牆(Firewall ) Single tenant 操作範例 . 10.1 10.2 Multi tenant 操作範例 . . 10.3 REST API 列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 路由器(Router ) 11.1 11.2 Multi-tenant 的操作範例 . 11.3 . Single Tenant 的操作範例 . . . REST API 列表 . . . . . 12 OpenFlow 交換器測試工具 . . 12.1 測試工具概要 . . 12.2 使用方法 . . . 12.3 測試工具使用範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 組織架構 13.1 應用程式開發模型(Application programming model ) . . . . . . . . . . . . . . . . . 14 協助專案開發 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.1 參與專案 . . 14.2 開發環境 . . 14.3 送交更新的程式碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 應用案例 15.1 15.2 Stratosphere SDN Platform (Stratosphere) . SmartSDN Controller(NTT COMWARE ) . .
前言 本書是給那些使用 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 這個優秀的開放原始碼的框架。
交換器( ) 本章將會用簡單的 Switching hub 安裝做為題材,說明 Ryu 如何安裝一個應用程式。 在交換器中有許許多多的功能。在這邊我們將看到擁有下列簡單功能的交換器。 · 學習連接到連接埠的 host 之 MAC 位址,並記錄在 MAC 位址表當中。 · 對於已經記錄下來的 MAC 位址,若是收到送往該 MAC 位址的封包,則轉送該封包到相對 應的連接埠。 · 對於未指定目標位址的封包,則執行 Flooding。 讓我們使用 Ryu 來實現這樣一個交換器吧。 實作的交換器 OpenFlow 交換器會接受來自于 controller 的指令並達到以下功能。 · 對於接收到的封包進行修改或針對指定的連接埠進行轉送。 · 對於接收到的封包進行轉送到 Controller 的動作(Packet-In )。 · 對於接收到來自 Controller 的封包轉送到指定的連接埠(Packet-Out )。 上述的功能所組合起來的就是一台交換器的實現。 首先,利用 Packet-In 的功能來達到 MAC 位址的學習。Controller 使用 Packet-In 接收來自交換器的 封包之後進行分析,得到連接埠相關資料以及所連接的 host 之 MAC 位址。 在學習之後,對所收到的封包進行轉送。將封包的目的位址,在已經學習的 host 資料中進行檢 索,根據檢索的結果會進行下列處理。 · 如果是已經存在記錄中的 host:使用 Packet-Out 功能轉送至先前所對應的連接埠 · 如果是尚未存在記錄中的 host:使用 Packet-Out 功能來達到 Flooding 下面將一步一步的說明並附上圖片以幫助理解。 1. 初始狀態
交換器( ) Flow table 為空白的狀況。 將 host A 接到連接埠 1,host B 接到連接埠 4,host C 接到連接埠 3。 1 2 3 4 MAC address table Flow table Host A Host C Host B 2. host A → host B 當 host A 向 host B 發送封包。這時後會觸發 Packet-In 訊息。host A 的 MAC 位址 會被連接埠 1 給記錄下來。由於 host B 的 MAC 位址尚未被學習,因此會進行 Flooding 並將封包往 host B 和 host C 發送。 1 2 3 4 MAC address table Host A: Port 1 Flow table Host A Host C Host B Packet-In: Packet-Out: 3. host B → host A 封包從 host B 向 host A 返回時,在 Flow table 中新增一筆 Flow Entry,並將封包轉 送到連接埠 1。因此該封包並不會被 host C 收到。
在 上實作交換器 1 2 3 4 MAC address table Host A: Port 1 Host B: Port 4 Flow table in-port:4, eth-dst:Host A -> output: Port 1 Host A Host C Host B Packet-In: Packet-Out: 4. host A → host B 再一次,host A 向 host B 發送封包,在 Flow table 中新增一個 Flow Entry 接著轉送 封包到連接埠 4。 1 2 3 4 MAC address table Host A: Port 1 Host B: Port 4 Flow table in-port:4, eth-dst:Host A -> output: Port 1 in-port:1, eth-dst:Host B -> output: Port 4 Host A Host C Host B Packet-In: Packet-Out: 接下來,讓我們實際來看一下在 Ryu 當中實作交換器的原始碼。 在 上實作交換器 Ryu 的原始碼之中有提供交換器的程式原始碼。
分享到:
收藏