mininet能和sdn物理华为sdn控制器器相连接吗

SDN你必须知道的十大问题
SDN你必须知道的十大问题
软件定义网络SDN是未来网络发展的趋势,搭载OpenFlow的协议提供了可行的方案,它将网络管理功能从网络设备中分离出来,使得用户可以构建简便、灵活、高度可扩展的网络,以解决下一代计算机网络的带宽需求。并且,许多大公司已经生产出了支持OpenFlow标准的网络设备,可以使用这些技术管理复杂的大型网络。但是小编认为,“书中自有黄金屋,书中自有颜如玉”,书籍的扩展编写是对一门技术的最大肯定,下面小编就将搜集整理的20余本关于SDN的书籍(按出版日期进行排序)介绍给大家,希望能够帮助大家对SDN有一个概念及深入的了解。
1. OpenDaylight应用指南
作者:唐宏,刘汉江,陈前锋,李鹏等
出版日期:日
《OpenDaylight应用指南》一书分为OpenDaylight基础概述、重点项目介绍和开发实践三部分。介绍了OpenDaylight社区背景、组织架构与项目概况;分析与阐释了OpenDaylight部分主要项目的设计思路、原理和开发技术;探讨了基于OpenDaylight进行业务控制平台开发的实践经验。本书可以作为网络技术人员和IT系统开发人员的中初级读物,帮助他们快速了解OpenDaylight社区及其大型通用SDN控制器的开发方法。
评价:作为坑最多的SDN 开源项目之一,OpenDaylight给使用者带来的困难是有目共睹的。该书的出现是否是基于入门OpenDaylight使用者的福音呢,这本书对于OpenDaylight详实的介绍绝对值得一读。
2. 图解OpenFlow
作者:[日]晃通 宫永直树 岩田淳
译者:李战军 薛文玲
出版时间:日
《图解OpenFlow》从OpenFlow的概要入手,以OpenFlow 1.0规范为核心,详细讲解了OpenFlow的基本机制和结构。为了加深理解,还介绍了实际的设置示例,包括OpenFlow中的LLDP和网络虚拟化等。另外,还讲解了从OpenFlow 1.0到OpenFlow 1.3.2之间版本的主要变化,以及OpenFlow的注意事项和未来的发展动向。
评价:笔者没看过这本书,就摘了一些网友的评论,反正对于OpenFlow协议入门来说绝对是很有帮助的。
1. 花了6个小时一口气读完,这本书清晰地按不同版本梳理了OpenFlow的功能和规范,在这个过程中让人逐步领会该协议的设计思想,对我理解SDN很有帮助。
2. 这本书的讲解通俗易懂,配图用心,看起来很直观。第3章到第6章介绍的用例和网络虚拟化的内容比较实用。
3. 这本书不仅仅讲解了OpenFlow协议本身,还介绍了一些应用实例以及LLDP等周边技术。第10~11章介绍了用户在使用协议的过程中需要注意的地方,个人觉得非常值得一读。
4. 从OpenFlow的工作原理到应用实例,这本书介绍得很全面。适合想要了解OpenFlow的初学者入门。
3. 解惑SDN
作者:樊勇兵, 陈楠, 黄志兰, 陈天
出版时间:日
全书共分三篇:产业篇、技术篇和实践篇。产业篇包括SDN 的定义及背景、SDN的架构与特征、SDN的发展现状和趋势;技术篇包括SDN的整体技术流派与架构,应用与编排。Restful、OSGi等北向接口;SDN在数据中心、WAN流量工程、IPv4/v6协议转换等应用场景中的实际应用。实践篇包括OpenStack的部署与应用,VMware NS、Juniper Contrail等主流数据中心的部署与应用。
评价:由于笔者并未读过这本书,由于本书出版日期较新,应该会有很多比较前沿的收获,并且从目录来看,该书的搜罗相当全面,对于宏观了解SDN产业来说应该很有帮助。作者也是在电信运营商一线,会有很多实际应用上的体会感悟。“世界这么大,我要去看看”这是笔者现在对这本书的期待。
4. 云计算网络珠玑
作者:李俊武
出版时间:日
《云计算网络珠玑》囊括了以太网和TCP/IP网络技术的每个方面,并应用大量的实例进行详细描述,兼顾网络技术发展的顺序,遵循TCP/IP网络四层从下到上的划分;另外,还从当前的技术热点上选取了SDN、Openflow、VXLAN等新兴技术的发展现状和发展趋势进行详细剖析,提供了一条快速掌握网络技术的学习途径。
评价:该书作者系业界资深从业人员李俊武,同时本书从网络基本原理、SDN架构到neutron实践,国内第一本深入分析neutron底层网络原理的网络技术书籍。无论是想从头开始学习网络技术的小白,还是已经有一定基础的网络工程师,都可以从本书中找到快速路径,通览全书后,读者可以尽快建立自己在网络方面的技术知识体系。
5. 学术中国·院士系列:软件定义网络核心原理与应用实践
作者:作者:黄韬、刘江、魏亮、张娇、刘韵洁
出版时间:日
该书分为核心原理和应用实践两大部分,对软件定义网络(SDN)技术进行了全面剖析和深入解读。第一部分阐述了SDN的设计思想与体系架构,详细分析了SDN的控制转发分离和可编程性,介绍了以OpenFlow为代表的SDN南向接口协议以及北向和东向接口协议,并且介绍SDN数据平面、控制平面以及SDN的应用案例。第二部分着重讲述SDN应用实践,从系统架构、代码解析等方面详细介绍了虚拟交换机、开源控制器、仿真测试实验工具的基本知识,并结合模拟网络环境搭建、虚拟网络设备部署、实际业务开发等具体应用实践场景,深入讲解了利用SDN技术进行创新研发的过程。
涉及内容广泛大概是该书最贴切的形容,作为学院派的产物,言辞中规中矩,又不缺乏高度。突出核心原理和基本概念的阐述,同时力图深入浅出地讲解SDN的业务应用开发过程,对从事SDN技术研发的专业人士、网络运营管理人员、相关专业高校学生以及对SDN技术感兴趣的读者,具有一定的参考价值。据悉第二版也正在撰写中,对于第一版吐过槽的小伙伴绝对值得期待。
6. 深入理解计算机网络系统设计
作者:胡成臣、杨泽卫、陆佳华、黑晓军
成书时间:2014年7月
《深入理解计算机网络系统设计》内容主要包括网络系统的基本概念设计及IP使用详细分析、叠锶自身研发的创新平台ONetSeries的简单介绍以及部分开发实例,除此以外,剩余部分着重于网卡、路由器、入侵检测和OpenFlowSwitch系统的设计实现。
相对于软件定义网络这个概念,这本书显得“硬朗”一些,从芯片级别的底层向上对SDN的适用场景进行了分析,内容侧重于怎样快速地把开源网络设计平台NetFPGA介绍,并将对网络系统设计的一些新的理解、经验和想法反馈给大家,无奈篇幅限制,很多精彩内容并未详细的展开叙述,但绝对体现了作者广阔的知识面,这本书从硬到软使大家对网络系统技术的理论基础框架的理解很有帮助,以及对实践也具有指导性意义。
7. 华章程序员书库:软件定义网络·基于OpenFlow的SDN技术揭秘
作者:阿泽多摩利克 (Siamak Azodolmolky)
译者:徐磊
出版时间:日
《软件定义网络:基于OpenFlow的SDN技术揭秘》是利用OpenFlow实际动手搭建SDN环境的系统实践指南,深入浅出地讲解OpenFlow的基础知识,详细阐述基于OpenFlow的网络应用开发、网络虚拟化、云计算中的安装与配置等具体过程。具体内容包括流的概念、流的转发、OpenFlow的功能、OpenFlow表的功能以及OpenFlow的特点和局限性;OpenFlow交换机的实现方案;OpenFlow控制器的作用及其API;环境的搭建;以学习型交换机和防火墙为例,展示网络应用开发;网络分片的获取;云计算中的OpenFlow;与OpenFlow有关的一些活跃的开源项目的概览。
就像作者所说,这本书的定位是SDN与OpenFlow指南,书中并没有技术决策层面的宏大叙事,更像是为即将开展SDN和OpenFlow之旅的实践者提供的一幅路线图(当然SDN的路线图不仅仅是OpenFlow)。该书引导读者从OpenFlow入门知识开始,由浅入深地了解SDN生态体系中的OpenFlow交换机、控制器、以及高效的mininet仿真工具,后面OpenStack Neutron的探索也很符合现在的研究热点,值得一读。
8. 软件定义网络:SDN与OpenFlow解析
作者:纳多 (Thomas D. Nadeau)、 格雷 (Ken Gray)
译者:毕军
出版时间:日
《软件定义网络:SDN与OpenFlow解析》是关于SDN的权威指南,全面介绍了SDN的定义、协议、标准及应用,讨论了当前OpenFlow模型及集中式网络控制、数据面生成、商业及开源控制器的结构与能力、赋予网络可编程能力的技术、数据中心由桌面向分布式演进的过程、网络功能可视化及服务链的关联、构建和维护SDN拓扑,以及理想的SDN框架等。
该书原版是SDN领域的权威著作(从动物头像的标志性封面也绝对能认出这个系列),结合了作者大量的实际工作和行业经验,给大家非常全面地介绍了主要的SDN 理念和实践,详尽、客观地介绍了SDN领域的最新进展,适合网络相关的从业者、管理者、研究者、投资者阅读。作为活跃在学术圈明星毕老师的译作,书籍质量也绝对值得保障。
9. 深度解析SDN:利益、战略、技术、实践
作者:张卫峰
出版时间:日
《深度解析SDN——利益、战略、技术、实践》用通俗易懂的语言深入浅出地介绍SDN的概念本质、SDN架构、产生原因、发展历史、对SDN的误解、以及SDN对产业的影响和发展趋势预测。除此之外,还介绍了各个公司的SDN战略、及在产业链中的位置、一些热门技术(如网络虚拟化、NFV、云计算等)跟SDN的关系、SDN热门技术OpenFlow的分析以及OpenFlow所面临的各种挑战和尝试、SDN 控制器,经过实践检验过的多个应用案例分析。
该书出自SDN界“劳模”张卫峰之手,内容涵盖范围广,从战略、内幕、利益、技术到实践全部覆盖,对设备商、云服务提供商、数据中心、科研工作者等领域的从业人员了解SDN都会大有裨益;而且由于作者具有很强的芯片公司的从业背景,对SDN转发面也有深入的分析。据可靠消息,新版已在紧锣密鼓的制作中,这对于粉丝和业界从业者来说无疑是一个好消息。
10. 中国联通研究院创新研究系列丛书:软件定义网络技术与应用
作者:刘诚明、陈赤航、张云勇
出版时间:日
该书从当前的网络发展现状分析网络的特征、存在的问题以及未来的发展趋势。在此基础上,引出软件定义网络的概念和体系架构,并分析了软件定义网络能够解决的问题以及相关的关键技术。随后对SDN的标准现状、技术发展现状、产业应用现状等进行系统梳理。最后,分享了基于云管理平台OpenStack的SDN原型系统方案。
《软件定义网络技术与应用》本着理实交融的原则,结合中国联通在相关领域的实践,有较强的实践指导意义,内容叙述言简意赅,适合速读。
11. SDN核心技术剖析和实战指南
作者:雷葆华、王峰 、王茜 、王和宇等
出版时间:日
本书首先对SDN 的概念和背景进行了系统的论述,比较和分析了SDN 领域的主流观点;进而全面深入地梳理了SDN 的核心技术体系,针对SDN 网络架构中各个层次的关键技术进行了重点讲解。同时,本书提供了基于开源技术的SDN 实践指南,帮助读者进一步加深对SDN 的原理与实现的理解。最后,本书充分地分析了SDN 的应用场景,并从产业生态系统的角度对SDN 的发展格局和未来走势进行了分析和展望。
该书能够帮助大家快速掌握SDN的核心理念,厘清SDN的技术演进,明晰SDN的发展方向,兼顾理论与实践,对业界各种流派能够包容并蓄,书中的内容不乏真知灼见,对从事SDN 技术产品研发的专业人士、网络运营服务从业人员,以及相关专业的高校学生和对SDN 感兴趣的各位读者,都会提供有益的帮助。据可靠消息,本书作者之一王峰今日也获得了ONF颁发的“杰出技术贡献”奖,如此诚恳之作值得一读。
1. MPLS in the SDN Era
作者:Antonio Sanchez Monge,Krzysztof Grzegorz Szarkowicz
出版日期:日
Juniper家15年底出的新书,两位作者都是网络界的老兵,Antonio有16年的行业从业经验,在J家至今效力已有11年,krzysztof也是Juniper一位优秀的工程师,从业20年,在J家效力8年。二者的工作都在长期围绕SDN、MPLS,想必这也是这本书技术性不可比拟的优势。
这本书从出版方来说就决定了其专业性,整本书的案例、拓扑等在 JunOS的基础上展开,不过更像是一本认证培训教材,文章脉络清晰,对于不同背景的从业者阅读也不会特别生硬,技术原理阐述言简意赅,用例详实,用料很足,是诚恳之作。
2. Software Defined Networking: Design and Deployment
作者:Patricia A. Morreale, James M. Anderson
出版日期:日
本书的文章脉络从虚拟化技术做引子,然后详细介绍SDN,讲究实践性,从服务提供商、设备提供商、互联网厂商几个角度阐述几者与SDN的关系,又着重介绍了关于SDN开发方面要注意的问题,并用大量的篇幅介绍了OpenFlow及OF-CONFIG,文章最后作者对SDN的现状做了阐述并对未来发展进行了展望。
这本书有些特别,并不是按部就班的讲SDN的所谓概念,更关注于网络虚拟化和相关网络的需求。书中也会用一部分篇幅对现有市场业务SDN相关的需求做一些案例分析。本书可以帮助用户更好的对SDN架构进行部署和规划,利于日后的开发工作。这本书无疑是业务向SDN迁移和将来有虚拟化方面进行研发需求群体的福音。
3. Software Defined Networks: A Comprehensive Approach
作者:Paul Goransson&、 Chuck Black
出版时间:日
《Software Defined Networks: A Comprehensive Approach》阐述由SDN引起的历史网络环境以及SDN技术的最新发展,主要介绍SDN成功部署所需要的技术知识,包括如何解释给非技术业务决策者在组织中的潜在好处以及带来的风险,将部分网络转移到SDN模型中;怎样作出明智关于何时在网络中应用SDN的决策;如何决定组织是否应该发展自己的SDN应用程序或希望从外部供应商获得这些;以一个长期存在的问题,无论是完全新颖的或更有效的方法,如何加快发展自己的SDN应用程序的能力;讨论启用SDN交换平台的进化;在网络中地址什么时候集成SDN网络技术;提供相关不同行业的SDN应用案列的概述,包括写入SDN应用的实际案例。
《Software Defined Networks: A Comprehensive Approach》介绍的SDN及OpenFlow协议的基本概念,主要是关注在SDN的未来发展与前景,但其中涉及的SDN案列及应用比较多,理论性较强,给网络管理者提供一个很好的阅读。
4. RYU SDN Framework - English Edition Release 1.0
作者:Ryu project team
出版时间:日
《RYU SDN Framework》是主要专注于Ryu与OpenFlow协议的一本书,其章节章节第一部分 是Simple Switch简单实际操作与流量监控以及链路聚合。第二部分详细说明并分析OpenFlow协议;第三部分讨论使用Ryu内建防火墙(FireWall)和测试工具应用程式;最后介绍Ryu的架构及实际应用的案例。
《RYU SDN Framework》给使用Ryu作为开发的架构的人,安装、使用案例及实践,通过实际的例子,介绍Ryu的程式如何运作及OpenFlow协议的封包函数的使用,目的是为了实现SDN的一本书,且应用python语言的易用性,支持OpenStack插件,较严谨。
5. Network Innovation through OpenFlow and SDN: Principles and Design
作者:Fei Hu
出版时间:日
《Network Innovation through OpenFlow and SDN: Principles and Design》介绍怎样使用SDN和OpenFlow构建容易设计的、建设和运营成本更低,而且更加灵活和可定制的网络,系统地整理介绍了关于解决SDN/ OpenFlow设计方面,自世界各地专家贡献者的见解。这本书的四个部分分别是基本概念、工程设计、服务质量(服务质量)、以及先进的主题。
在SDN/OpenFlow中,《Network Innovation through OpenFlow and SDN: Principles and Design》提供广泛的需求来构建、部署、管理OpenFlow/SDN和网络,覆盖面比较全,包括系统架构、语言和编程问题、交换机、控制器、多媒体支持、安全性以及网络操作系统。看完这本书,将会明白如何才能使从传统网络向SDN/ OpenFlow网络的平滑过渡。
6. Software Defined Networking with OpenFlow
作者:Siamak Azodolmolky
出版时间:日
《Software Defined Networking with OpenFlow》介绍SDN和OpenFlow,学习每个构建模块的作用,并演示使用SDN/OpenFlow提供新的服务和功能改变网络工作的方法来解决传统瓶颈和创新商业的影响。以实践向导结束,对SDN和OpenFlow基本原理有一个深入的了解。主要学习详细的OpenFlow协议概念、交换机和控制器等,并且提供OpenFlow laboratory网络模拟平台进行实践,学习使用OpenFlow控制器API怎样快速研发网络创新应用,并在没有调试OpenFlow硬件环境下测试网络应用。
《Software Defined Networking with OpenFlow》以概念为主,实践为辅,让大家掌握SDN/OpenFlow的基本要素以及通过开源的Open vSwitch、控制器和OpenFlow laboratory工具,让大家能够深入了解SDN的整个生态系统,是一个很好的SDN指南。
7. Virtual Networks: Pluralistic Approach for the Next Generation of Internet
作者:Otto Carlos M. B. Duarte 、Guy Pujolle
出版时间:日
《Virtual Networks: Pluralistic Approach for the Next Generation of Internet》是关于虚拟化技术,允许共享基本的计算资源,切片划分真实的计算环境到虚拟计算环境中,形成彼此隔离,并提供了Xen和OpenFlow虚拟化平台的性能分析,定义了网络虚拟化的基础设施必须提供向导平面管理虚拟网络元素。除此之外,本书提出了两个平台的系统管理接口,来控制和管理虚拟网络元素,网络虚拟化基础架构必须提供的5个元素,即定义:实例、删除、迁移、监控和设置。
《Virtual Networks: Pluralistic Approach for the Next Generation of Internet》重点调查对虚拟网络存在的控制算法,描述了一种使用Xen作为虚拟工具用于分组转发的主要挑战,更详细地描述,对于虚拟网络局部控制的提案。每个物理节点即使在错误操作的虚拟网络中,仍能保证每个虚拟网络的服务水平,书中对于虚拟化技术给出了详细的分析与实践。
8. Introduction to Software Defined Networking - OpenFlow & VxLAN
作者:Vishal Shukla
出版时间:日
《Introduction to Software Defined Networking - OpenFlow & VxLAN》是以教育为目的介绍SDN,主要集中介绍SDN最有前景的协议OpenFlow以及其他的SDN设施VxLAN的书籍。这本书主要给出了SDN的概述并深度解析开放流技术和VxLAN。OpenFlow方面主要有以下解释:(1)为什么是OPenFlow;(2)OpenFlow事件;(3)OpenFlow组件;(4)使用wireshark抓包的OpenFlow案列学习;(5)每个域所有的OpenFlow数据包的详细解析。VxLAN方面主要有以下解释:(1)为什么是VxLAN;(2)VxLAN事件;(3)VxLAN实例研究;(4)每个域所有的VxLAN数据包的详细解析。
《Introduction to Software Defined Networking - OpenFlow & VxLAN》中关于SDN的一些流程分析和OpenFlow协议解释比较清楚,他为开发、测试人员,网络管理员以及任何想知道SDN并想从头开始,并想了解OpenFlow和VXLAN的人是一个好的阅读。
9. Openflow: High-Impact Strategies
作者:Kevin Roebuck
出版时间:日
《Openflow: High-Impact Strategies - What You Need to Know: Definitions, Adoptions, Impact, Benefits, Maturity, Vendors》具有最新的资讯信息、资料和背景,主要包括:OpenFlow交换机协议、网络协议、以及其他的各种协议……这本书解释了深入的OpenFlow的真正驱动因素和运作。它使你在OpenFlow的认识客观性上比较减少了技术、时间和资源的投入。
《Openflow: High-Impact Strategies - What You Need to Know: Definitions, Adoptions, Impact, Benefits, Maturity, Vendors》章节阅读比较容易,有相关SDN广泛的引用和链接,对SDN/OpenFlow有一个比较全的收集,帮助读者深入了解SDN,此书是一个独一无二的资源收藏。
目前我们还在寻找更多的书籍,有未补充或其他的请联系,另外文中如有不妥之处还请批评指正。
发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&您的位置: &
基于mininet的SDN架构仿真研究
优质期刊推荐温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
喜欢交朋友,喜欢编程
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3139)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Floodlight+Mininet搭建OpenFlow(一):环境搭建',
blogAbstract:'本文主要介绍了在没有OpenFlow硬件设备的情况下如何搭建一个OpenFlow环境。\n国外有高手也写了一份文档:\nHow to Build an SDN Lab without Needing OpenFlow Hardware\n'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}Mininet是一款非常轻巧但是功能很强大的网络模拟器。网络研究者可以使用Mininet创建支持OpenFlow的SDN拓扑。随着SDN研究的发展,多控制器协作成为未来的研究方向,所以使用Mininet构建多控制器网络拓扑也成为一种需求。本篇将讲述如何使用Mininet搭建多控制器网络拓扑。
Multi-Controller
多控制器有两种理解,一种理解是面向交换机的多控制器。即一个交换机会连接多个控制器,控制器之间的关系可以是equal,也可以是master/slave模式。关于多控制器的介绍,有兴趣的读者可以参考OpenFlow1.3协议的multi-controller部分内容。另一种理解是面向控制器的多控制器。即,多个控制器分别管理各自的数据平面网络,且数据平面之间有链路互联。这种模式下,控制器之间没有关系,控制器所控制的数据平面也没有关系。关于多控制器方面的研究,笔者会在后续的博客中大篇幅介绍。
本篇将针对这两种理解,介绍如何搭建多控制器的Mininet拓扑。
面向交换机的多控制器网络拓扑
对于一个交换机而言,可以连接多个控制器,其实现方式非常简单, 在Mininet的源码中已经实现。从Mininet的文件中,我们可以找到有用的代码:
def start( self, controllers ):
"""Start OpenFlow reference user datapath.
Log to /tmp/sN-{ofd,ofp}.log.
controllers: list of controller objects"""
# Add controllers
clist = ','.join( [ 'tcp:%s:%d' % ( c.IP(), c.port )
for c in controllers ] )
ofdlog = '/tmp/' + self.name + '-ofd.log'
ofplog = '/tmp/' + self.name + '-ofp.log'
intfs = [ str( i ) for i in self.intfList() if not i.IP() ]
self.cmd( 'ofdatapath -i ' + ','.join( intfs ) +
' punix:/tmp/' + self.name + ' -d %s ' % self.dpid +
self.dpopts +
' 1& ' + ofdlog + ' 2& ' + ofdlog + ' &' )
self.cmd( 'ofprotocol unix:/tmp/' + self.name +
' ' + clist +
' --fail=closed ' + self.opts +
' 1& ' + ofplog + ' 2&' + ofplog + ' &' )
if "no-slicing" not in self.dpopts:
# Only TCReapply if slicing is enable
# Allow ofdatapath to start before re-arranging qdisc's
for intf in self.intfList():
if not intf.IP():
self.TCReapply( intf )
123456789101112131415161718192021222324
&&&&def start( self, controllers ):&&&&&&&&&&&&"""Start OpenFlow reference user datapath.&&&&&&&&&&&&&& Log to /tmp/sN-{ofd,ofp}.log.&&&&&&&&&&&&&& controllers: list of controller objects"""&&&&&&&&&&&&# Add controllers&&&&&&&&&&&&clist = ','.join( [ 'tcp:%s:%d' % ( c.IP(), c.port )&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&for c in controllers ] )&&&&&&&&&&&&ofdlog = '/tmp/' + self.name + '-ofd.log'&&&&&&&&&&&&ofplog = '/tmp/' + self.name + '-ofp.log'&&&&&&&&&&&&intfs = [ str( i ) for i in self.intfList() if not i.IP() ]&&&&&&&&&&&&self.cmd( 'ofdatapath -i ' + ','.join( intfs ) +&&&&&&&&&&&&&&&&&&&&&&' punix:/tmp/' + self.name + ' -d %s ' % self.dpid +&&&&&&&&&&&&&&&&&&&&&&self.dpopts +&&&&&&&&&&&&&&&&&&&&&&' 1& ' + ofdlog + ' 2& ' + ofdlog + ' &' )&&&&&&&&&&&&self.cmd( 'ofprotocol unix:/tmp/' + self.name +&&&&&&&&&&&&&&&&&&&&&&' ' + clist +&&&&&&&&&&&&&&&&&&&&&&' --fail=closed ' + self.opts +&&&&&&&&&&&&&&&&&&&&&&' 1& ' + ofplog + ' 2&' + ofplog + ' &' )&&&&&&&&&&&&if "no-slicing" not in self.dpopts:&&&&&&&&&&&&&&&&# Only TCReapply if slicing is enable&&&&&&&&&&&&&&&&sleep(1)&&# Allow ofdatapath to start before re-arranging qdisc's&&&&&&&&&&&&&&&&for intf in self.intfList():&&&&&&&&&&&&&&&&&&&&if not intf.IP():&&&&&&&&&&&&&&&&&&&&&&&&self.TCReapply( intf )
start函数发起了交换机到控制器的网络连接。传入的参数controllers是一个可迭代的数组,clist是整合之后的控制器信息,包括控制器的IP和控制器的端口。之后调用self.cmd函数启动连接,连接到控制器。
start函数在UserSwitch和OVSSwitch等交换机类中均有对应实现。所以,只需在启动交换机时,传入对应的控制器列表即可。
关键代码举例如下:
net = Mininet(controller=None, switch=OVSSwitch, link=TCLink)
s1 = net.addSwitch('s1')
controller_list = []
for i in xrange(3):
name = 'controller%s' % str(i)
c = net.addController(name, controller=RemoteController,
port=6661 + i)
controller_list.append(c)
s1.start(controller_list)
1234567891011
&&net = Mininet(controller=None, switch=OVSSwitch, link=TCLink)&&&&s1 = net.addSwitch('s1')&&&&controller_list = []&&&&&&&&for i in xrange(3):&&&&&&&&name = 'controller%s' % str(i)&&&&&&&&c = net.addController(name, controller=RemoteController,&&&&&&&&&&&&&&&&&&&&&&&&&&port=6661 + i)&&&&&&&&controller_list.append(c)&&&&&&&&s1.start(controller_list)
其余代码如头文件引入,主函数等请参考后续示例代码。
面向控制器的多控制器网络拓扑
面向控制器的多控制器网络拓扑定义了多个交换机,并使其分别连接到不同的控制器,从而完成拓扑搭建。在下列示例代码中,我们定义了7个网络分别连接到7个控制器,每一个网络中有5个全连接的交换机,不同网络之间还有链路,使得7个网络彼此联通。代码比较简单,不再赘述,读者可自行阅读。
#!/usr/bin/python
This example create 7 sub-networks to connect 7
domain controllers.
Each domain network contains at least 5 switches.
For an easy test, we add 2 hosts for one switch.
So, in our topology, we have at least 35 switches and 70 hosts.
Hope it will work perfectly.
from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import Link, Intf, TCLink
from mininet.topo import Topo
import logging
def multiControllerNet(con_num=7, sw_num=35, host_num=70):
"Create a network from semi-scratch with multiple controllers."
controller_list = []
switch_list = []
host_list = []
net = Mininet(controller=None, switch=OVSSwitch, link=TCLink)
for i in xrange(con_num):
name = 'controller%s' % str(i)
c = net.addController(name, controller=RemoteController,
port=6661 + i)
controller_list.append(c)
print "*** Creating %s" % name
print "*** Creating switches"
switch_list = [net.addSwitch('s%d' % n) for n in xrange(sw_num)]
print "*** Creating hosts"
host_list = [net.addHost('h%d' % n) for n in xrange(host_num)]
print "*** Creating links of host2switch."
for i in xrange(0, sw_num):
net.addLink(switch_list[i], host_list[i*2])
net.addLink(switch_list[i], host_list[i*2+1])
print "*** Creating interior links of switch2switch."
for i in xrange(0, sw_num, sw_num/con_num):
for j in xrange(sw_num/con_num):
for k in xrange(sw_num/con_num):
if j != k and j & k:
net.addLink(switch_list[i+j], switch_list[i+k])
print "*** Creating intra links of switch2switch."
5-9 10-14 15-19 20-24 25-29 30-34
# domain1 -& others
net.addLink(switch_list[4], switch_list[6])
net.addLink(switch_list[4], switch_list[10])
net.addLink(switch_list[1], switch_list[15])
net.addLink(switch_list[1], switch_list[20])
# domain2 -& others
net.addLink(switch_list[6], switch_list[10])
net.addLink(switch_list[8], switch_list[12])
net.addLink(switch_list[8], switch_list[18])
net.addLink(switch_list[7], switch_list[25])
# domain3 -& others
net.addLink(switch_list[10], switch_list[16])
net.addLink(switch_list[12], switch_list[16])
net.addLink(switch_list[10], switch_list[21])
net.addLink(switch_list[12], switch_list[27])
# domain4 -& others
net.addLink(switch_list[16], switch_list[21])
net.addLink(switch_list[18], switch_list[27])
net.addLink(switch_list[18], switch_list[31])
net.addLink(switch_list[19], switch_list[34])
# domain5 -& others
net.addLink(switch_list[21], switch_list[27])
net.addLink(switch_list[23], switch_list[31])
# domain6 -& others
net.addLink(switch_list[25], switch_list[31])
net.addLink(switch_list[27], switch_list[32])
#domain7 has not need to add links.
print "*** Starting network"
net.build()
for c in controller_list:
for i in xrange(0, sw_num, sw_num/con_num):
for j in xrange(sw_num/con_num):
switch_list[i+j].start([controller_list[_No]])
#print "*** Testing network"
#net.pingAll()
print "*** Running CLI"
print "*** Stopping network"
net.stop()
if __name__ == '__main__':
setLogLevel('info')
# for CLI output
multiControllerNet(con_num=7, sw_num=35, host_num=70)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
&&&& #!/usr/bin/python&&&&&&&&"""&&&&&&&&This example create 7 sub-networks to connect 7&&domain controllers.&&&&&&&&Each domain network contains at least 5 switches.&&&&&&&&For an easy test, we add 2 hosts for one switch.&&&&&&&&So, in our topology, we have at least 35 switches and 70 hosts.&&&&&&&&Hope it will work perfectly.&&&&"""&&&&&&&&from mininet.net import Mininet&&&&from mininet.node import Controller, RemoteController, OVSSwitch&&&&from mininet.cli import CLI&&&&from mininet.log import setLogLevel, info&&&&from mininet.link import Link, Intf, TCLink&&&&from mininet.topo import Topo&&&&import logging&&&&import os&&&&&&&&&&&&def multiControllerNet(con_num=7, sw_num=35, host_num=70):&&&&&&&&"Create a network from semi-scratch with multiple controllers."&&&&&&&&controller_list = []&&&&&&&&switch_list = []&&&&&&&&host_list = []&&&&&&&&&&&&net = Mininet(controller=None, switch=OVSSwitch, link=TCLink)&&&&&&&&&&&&for i in xrange(con_num):&&&&&&&&&&&&name = 'controller%s' % str(i)&&&&&&&&&&&&c = net.addController(name, controller=RemoteController,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&port=6661 + i)&&&&&&&&&&&&controller_list.append(c)&&&&&&&&&&&&print "*** Creating %s" % name&&&&&&&&&&&&print "*** Creating switches"&&&&&&&&switch_list = [net.addSwitch('s%d' % n) for n in xrange(sw_num)]&&&&&&&&&&&&print "*** Creating hosts"&&&&&&&&host_list = [net.addHost('h%d' % n) for n in xrange(host_num)]&&&&&&&&&&&&print "*** Creating links of host2switch."&&&&&&&&for i in xrange(0, sw_num):&&&&&&&&&&&&net.addLink(switch_list[i], host_list[i*2])&&&&&&&&&&&&net.addLink(switch_list[i], host_list[i*2+1])&&&&&&&&&&&&print "*** Creating interior links of switch2switch."&&&&&&&&for i in xrange(0, sw_num, sw_num/con_num):&&&&&&&&&&&&for j in xrange(sw_num/con_num):&&&&&&&&&&&&&&&&for k in xrange(sw_num/con_num):&&&&&&&&&&&&&&&&&&&&if j != k and j & k:&&&&&&&&&&&&&&&&&&&&&&&&net.addLink(switch_list[i+j], switch_list[i+k])&&&&&&&&&&&&print "*** Creating intra links of switch2switch."&&&&&&&&&&&&# 0-4&&5-9 10-14 15-19 20-24 25-29 30-34&&&&&&&&# domain1 -& others&&&&&&&&net.addLink(switch_list[4], switch_list[6])&&&&&&&&net.addLink(switch_list[4], switch_list[10])&&&&&&&&net.addLink(switch_list[1], switch_list[15])&&&&&&&&net.addLink(switch_list[1], switch_list[20])&&&&&&&&&&&&# domain2 -& others&&&&&&&&net.addLink(switch_list[6], switch_list[10])&&&&&&&&net.addLink(switch_list[8], switch_list[12])&&&&&&&&net.addLink(switch_list[8], switch_list[18])&&&&&&&&net.addLink(switch_list[7], switch_list[25])&&&&&&&&&&&&# domain3 -& others&&&&&&&&net.addLink(switch_list[10], switch_list[16])&&&&&&&&net.addLink(switch_list[12], switch_list[16])&&&&&&&&net.addLink(switch_list[10], switch_list[21])&&&&&&&&net.addLink(switch_list[12], switch_list[27])&&&&&&&&&&&&# domain4 -& others&&&&&&&&net.addLink(switch_list[16], switch_list[21])&&&&&&&&net.addLink(switch_list[18], switch_list[27])&&&&&&&&net.addLink(switch_list[18], switch_list[31])&&&&&&&&net.addLink(switch_list[19], switch_list[34])&&&&&&&&&&&&# domain5 -& others&&&&&&&&net.addLink(switch_list[21], switch_list[27])&&&&&&&&net.addLink(switch_list[23], switch_list[31])&&&&&&&&&&&&# domain6 -& others&&&&&&&&net.addLink(switch_list[25], switch_list[31])&&&&&&&&net.addLink(switch_list[27], switch_list[32])&&&&&&&&&&&&#domain7 has not need to add links.&&&&&&&&&&&&print "*** Starting network"&&&&&&&&net.build()&&&&&&&&for c in controller_list:&&&&&&&&&&&&c.start()&&&&&&&&&&&&&&&&_No = 0&&&&&&&&for i in xrange(0, sw_num, sw_num/con_num):&&&&&&&&&&&&for j in xrange(sw_num/con_num):&&&&&&&&&&&&&&&&switch_list[i+j].start([controller_list[_No]])&&&&&&&&&&&&_No += 1&&&&&&&&&&&&#print "*** Testing network"&&&&&&&&#net.pingAll()&&&&&&&&&&&&print "*** Running CLI"&&&&&&&&CLI(net)&&&&&&&&&&&&print "*** Stopping network"&&&&&&&&net.stop()&&&&&&&&if __name__ == '__main__':&&&&&&&&setLogLevel('info')&&# for CLI output&&&&&&&&multiControllerNet(con_num=7, sw_num=35, host_num=70)
Mininet功能很强大,基本可以满足日常的科研需求。最后,简单的启动脚本可以供参考。该脚本可以启动7个窗口,分别在不同的端口上启动7个ryu控制器,从而使得7个网络的交换机可以连接到对应的网络。
for i in $(seq 1 7);
let port=i+6660
xterm -title "app$i" -hold -e ryu-manager ryu/app/simple_switch_13 --ofp-tcp-listen-port=$port &
&&for i in $(seq 1 7);&&&&&&&&do&&&&&&&&let port=i+6660&&&&&&&&xterm -title "app$i" -hold -e ryu-manager ryu/app/simple_switch_13 --ofp-tcp-listen-port=$port &&&&&&&&&done
希望自己的研究能够顺利进行,最终面世。
作者简介:李呈,2014/09-至今,北京邮电大学信息与通信工程学院未来网络理论与应用实验室(FNL实验室)攻读硕士研究生。
本站声明:本站原创文章仅代表作者观点,不代表SDNLAB立场。转载须注明来自 并附上本文链接。
本文链接:
本文标签:
请后才可以评论
AT&T希望通过CORD项目将运营商网络中的传…本文系SDNLAB投稿文章,我们希望通过SDNLA…本文作为码农学ODL系列的SDN基础入门篇,…本文系SDN实战团技术分享系列,我们希望通…在已有专线的基础上,SD-WAN提供了一种低…
微信公众号:搜索"SDNLAB"或扫描上面的二维码。
没有帐号?}

我要回帖

更多关于 mininet连接控制器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信