SDN第四次作业
《简单表述控制器的架构技术》
1.总的控制器的基本架构
2.ONOS控制器架构
ONOS的设计原则:
ONOS把运营商的诉求放在设计理念的第一位,在ONOS的B版本ON.LAB没有新增任何特性而是专注于性能提升。Keep it simple,本身在ONOS上有很好的体现,ONOS对新用户而言很简单,很容易上手。关注点分离和模块化,这个是软件设计的通用准则。协议和设备行为不感知,是希望在应用层,用户不需要感知协议和设备的差异。这几点是ONOS贯穿始终的原则。
与其他控制器比较不同的是:
- 主要面对的使用人群是运营商 厂家
- ONOS 统一的网络资源和网元模型奠定了第三方SDN应用程序互通的基础,使得运营商可以做灵活的业务协同和低成本业务创新。
- ONOS北向接口的标准化可以帮助运营商可以集成大量第三方SDN应用,其统一的南向API接口可以帮助运营商引入第三方设备的驱动程序,避免厂家锁定。
- 多种南向协议,既支持现有设备,也支持未来白盒设备,既保护现有投资,又确保架构面向未来。
另外ONOS给我最大的感觉是它的高可扩展性,高性能, 这是我觉得它和其他控制器的区别。
3.Ryu控制器架构
利用Python语言编写,基于组件的框架,这些组件均以Python模块形式存在,上层为OpenStack和Web提供了编程接口,中间为Ryu自行研发的应用组件,最下层为Ryu底层实现的基本组件。Ryu因其架构清晰,支持OpenFlow全部版本。这个文件中定义了RyuApp基类,开发APP的时继承这个基类,就获得一个APP的一切了。
ryu/ryu目录下的主要目录内容
-
base
base中有一个非常重要的文件:app_manager.py,其作用是RYU应用的管理中心。
其主要的函数有app注册、注销、查找、并定义了RYUAPP基类,定义了RYUAPP的基本属性。
这个文件中还定义了AppManager基类,用于管理APP。定义了加载APP等函数。 -
controller
controller文件夹中许多非常重要的文件,如events.py, ofp_handler.py, controller.py等。 -
lib
lib中定义了我们需要使用到的基本的数据结构,如dpid, mac和ip等数据结构。 -
ofproto
在这个目录下,基本分为两类文件,一类是协议的数据结构定义,另一类是协议解析,也即数据包处理函数文件。 -
topology
包含了switches.py等文件,基本定义了一套交换机的数据结构。
个人觉得Ryu的特点是简易和更方便使用。
4.opendaylight控制器架构
本周实验内容也涉及了ODL控制器,从初步的使用来看,个人的感觉是ODL控制器功能很全,但是它的模块很多。。。入门难度比较大,很复杂,而且UI界面响应速度也很慢,感觉比其他控制器的使用会繁琐一些。而且安装步骤也比其他的要多,需要再安装组件。(当然也可能因为我使用的还不够熟练 = = )
Opendaylight的架构可分为三层,南向接口和协议插件,控制器平台,网络应用业务和服务。采用YANG作为建模语言,控制平面层是Opendaylight的核心,包括MD-SAL、基础的网络功能模块、网络服务和网络抽象等模块。顶层:顶层由控制和监控网络行为的业务和网络逻辑应用构成,此外,复杂的解决方案应用需要与云计算及网络虚拟化相结合ODL设计原则、架构及依赖技术中间层:SDN控制器框架层,其南向协议接口可以支持不同南向协议插件,这些协议插件动态连接到SAL(Service Abstract Layer),SAL适配后再提供统一北向接口供上层应用调用。底层:由物理或虚拟设备构成。
目前的SDN控制器比较:
最后,Ryu使用Python编写,而ONOS,ODL采用的是java编写
还有目前OpenDay⁃Light、Ryu 这两个控制器通过各自的技术手段对 BGP、Net⁃ conf、OVSDB、SNMP 等南向接口协议均有了很好的支 持,控制器通过对多种南向接口协议的支持可更好地 与底层交换设备进行信息交互,使得云数据中心内部 的组网更加灵活。
作业题目
1.阅读
了解SDN控制器的发展
http://www.sdnlab.com/13306.html
http://www.docin.com/p-1536626509.html
了解ryu控制器
http://www.sdnlab.com/1785.html
了解onos控制器
http://www.sdnlab.com/16912.html
了解opendaylight控制器
https://pan.baidu.com/s/1eSfYdNW?qq-pf-to=pcqq.c2c
https://pan.baidu.com/s/1jGF2fIY?qq-pf-to=pcqq.c2c
2.书写博客
文献阅读时,注意比较各个控制器之间的实现技术异同。书写一篇博客,博客内容为,简单表述控制器的架构技术。