在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → SDN控制器RYU入门

SDN控制器RYU入门

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:11.79M
  • 下载次数:17
  • 浏览次数:375
  • 发布时间:2020-07-18
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
RYU控制器的入门书籍,实践结合理论掌握SDN控制器的基本操作
Contents 前言 1交換器( Switching Hub) 1.1 Switching Hub 1.2 Open Flow實作的交換器 13336 1.3在Ryu上實作交換器. 1.4執行Ryu應用程式 14 1.5本章總結... 20 2流量監控( Traffic monitor) 21 2.1定期檢查網路狀態 21 2.2安装 Traffic monitor. 21 2.3執行 Traffic monitor 27 2.4本章總結 29 3 REST AP 31 3.1整合 REST AP 31 32安裝包含 REST AP|的 Switching Hub 31 33安裝 Simple SwitchRest13cass 3.4安装 Simple SwitchController Class 34 3.5執行包含 REST AP的 Switching Hub 36 3.6本章總結 38 4網路聚合( Link Aggregation) 4.1網路聚合( Link Aggregation) 39 4.2執行Ryu應用程式 4.3實作Ryu的網路聚合功能 50 4.4本章總結 59 5生成樹( Spanning Tree) 61 5.1 Spanning Tree 61 52執行Ru應用程式 63 53使用 OpenFlow完成生成樹 74 54使用Ryu實作生成樹 ,,,,,,75 55本章總結 .84 6 Open Flow通訊協定 85 6.1 Mato 85 6.2 nstruction ,,86 6.3 Action 87 7 ofproto函式庫 89 7.1簡軍說明 89 7.2相關模組 89 7.3基本使用方法 8封包函式庫 93 8.1基本使用方法 93 8.2應用程式範例.. 95 9 OF-Config函式庫 99 91 OF-Config通訊協定 9.2函式庫架構 99 9.3使用範例 100 10防火牆( Firewal) 103 10.1 Single tenant操作範例 103 10.2 Multi tenant操作範例 103 REST AP|列表.,. 116 11路由器( Router) 11.1 Single Tenant的操作範例 119 112 Multi-tenant的操作範例 129 113 REST AP|列表 141 120 perLow交換器測試工具 143 12.1測試工具概要 143 122使用方法 ,,,,,,145 12.3測試工具使用範例 148 13組織架構 157 131應用程式開發模型( Application programming model) 157 14協助專案開發 159 14.1參與專案 ,,,,.,,159 14.2開發環境 159 143送交更新的程式碼 160 15應用案例 161 15.1 Stratosphere SDN Platform(Stratosphere) 161 15.2 SmartSDN Controller (NTT COMWARE .161 前言 本書是給那些使用Ru作為開發的框架,而目的是為了實現軟體定義網路( Software defined Networking,SDN)而寫的一本參考書。 那麼為什麼要選擇Ryu作為開發平台呢? 我們衷心的希望您可以在本書中找到解答。 建議您依照本書的章節,依序的閱讀第1章至第5章。首先第1章是 Simple switch的實作, 接者後面的章節是流量監控( Traffic Monitor)以及網路聚合( Link aggregation)。透過實際的 例子,我們將介紹Ryu的程式是如何運作的 第δ章到第9章,我們將詳細的說明¤ pen Flow通訊協定( Open Flow Protoco)以及封包函數 的使用方法。接著第10章到第12章,我們會討論如何使用Ryu內建的防火牆( Firewal)和 測試工具( test tool)來開發應用程式。第13到15章將介紹Ryu的架構( architecture)及 實傺應用案例 最後,我們非常感射您對於Ryu專案的青睞及支持,特別對於Ryu的使用者而言。希望在不久 的將來能有機會在 Mailing List上得到來自于您的簣貴意見,讓我們一起加入Ryu專案並進行 開發吧。 繁體中文版本是由台灣資訊工業策進會-SDN團隊協助整理及褂譯,除了不吝批評與指教之 外也歡迎更多朋友加入,讓中文讀者可以更快更即時的了解Ru這個優秀的開放原始碼的框 架 1 Contents 2 CHAPTER 1 交換器( Switching Hub) 本章將會用簡單的 Switching hul安裝做為題材,說明Ryu如何安裝一個應用程式 1.1 Switching Hub 在交換器中有許許多多的功能。在這邊我們將看到擁有下列簡單功能的交換器。 ·學習連接到連接埠的host之MAC位址,並記錄在MAC位址表當中。 對於已經記錄下來的MAC位址,若是收到送往該MAC位址的封包,則轉送該封包到相 對應的連接埠。 對於未指定目標位址的封包,則執行 ooding 讓我們使用Ryu來實現這樣一個交換器吧 120 pen Flow實作的交換器 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.初始狀態 Chapter1.交換器( Switching Hub F| ow table為空白的狀況。 將 host a接到連接埠1, host B接到連接埠4, host c接到連接埠3。 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 o發送。 MAC address table Host A: Port 1 Flow table Host A Host c Host B Packet-In n-p th-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收到。 12.0penF|oW實作的交換器 MAc address table Host A: Port 1 Flow table in-port: 4, eth-dst: Host A output:Port工 Host A Host c Host B Packet-In: in-port: 4 th-dst: host a eth-src. host b Packet-Out: action: OUTPUT: port 1 4. host a→ host b 再一次, host A向 host b發送封包,在 Flow table中新增一個 Flow Entry接著 轉送封包到連接埠4。 MAC address table Host a: port 1 Host B: Port 4 Flow table in-port: 4, eth-dst: Host A output: Port 1 n-port: 1, eth-dst: Host B - output: Port 4 Host A Host c Host b Packet-In: in-port: 1 eth-dst: host B eth-src: host A Packet-Out action: OUTPUT: port 4 接下來,讓我們實際來看一下在Ryu當中實作交換器的原始碼 5 Chapter1.交換器( Switching Hub 1.3在Ryu上實作交換器 Ru的原始碼之中有提供交換器的程式原始碼。 ryu/app/simple_switch_13.py Open Flow其他的版本也有相對應的原始碼,例如 simple_ switch.py( Open Flow1.0)和sim- ple_ switch12.py( Open Flow1.2)。我們現在要來看的則是 OpenFlow1.3的版本。 由於原始碼不多,因此我們把全部都拿來檢視。 from ryu. base import app_manager from ryu controller import ofp event from ryu controller. handler import CONFIG_DISPATCHER, MAIN- DISPATCHER from ryu controller. handler import set ev cls from ryu. ofproto imp proto v1 3 from ryu.lib. packet import packet from ryu. lib. packet import ethernet class SimpleSwitch13(app_manager. RyuApp): OFP_VERSIONS = [ofproto-v1_3. OFP_VERSION] def init (self gs rg super(SimpleSwitch13, self) (*args, **kwargs) self. mac_to-port =th Cset_ev- cls(ofp_event. EventOFPSwitchFeatures, CONFIG_DISPATCHER) def switch features handler(self, ev) msg. da proto datapath, ofproto parser datapath, ofproto_parser install table-miss flow entry f We specify No BUFFER to max_len of the output action due to ovs bug. At this moment, if we specify a lessor number,cg. 128, ovs will send Packet-In with invalid buffer id and truncated packet data. In that case, we cannot output packets f correctl match parser. OFPMatch() actions [parser. OFPActionOutput (ofproto OFPP_ CONTROLLER ofproto. OFPCML_NO_BUFFER) self. add flow(datapath, 0, match, actions) def add_flow(self, datapath, priority, match, actions) ofproto datapath, ofproto parser datapath. ofproto_parser inst - [parser. OFPInstructionActions (ofproto. DFPIT_APPLY_ACTIONS ctions)] nod parser OFPFlowMod(datapath=datapath, priority=priorit match=match, instructions=inst) datapath. send_msg(mod) Cset_ev_- cls(ofp_event. EventOFPPacketIn, MAIN_ DISP ATCHER) def -packet_in_handler(self, ev) sg g datapath msg. datapath ofproto datapath, ofproto parser datapath. ofproto-parser tchl 【实例截图】
【核心代码】

标签:

实例下载地址

SDN控制器RYU入门

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警