SDN第四次作业
## SDN控制器的发展
- 第一款SDN控制器是NOX,目前NOX的社区状态已经不再活跃。。在早期的SDN论文中,NOX作为唯一的控制器,发挥了重要的作用。NOX给后来的控制器开发提供了很好的范例,高层级的编程架构。然而,由于其使用C语言编写,给开发SDN应用带来了许多困难,逐渐在控制器竞争中失去优势。
- 在NOX出现不久之后,其兄弟版本POX面世。POX的内部机制和NOX一样,但是采用Python语言开发。POX因其简单,易入门而得到广泛的关注和使用,成为SDN入门,学习SDN控制器的很好选择。
- 随着技术的发展,更多优秀的控制器,如2012年采用Python语言开发的控制器代表Ryu,2013年采用Java语言开发的控制器代表FloodLight等纷纷涌现。Ryu因其架构清晰,支持OpenFlow全部版本,有社区的Plug-in集成到OpenStack,性能良好和文档齐全等优点获得了许多SDN研究者的关注。
- SDN控制器的发展因一个重要的SDN“控制器”而展开新的篇章。2013年,由Linux Foundation和多家网络巨头如Cisco、Juniper和Broadcom等公司一起创立的开源项目OpenDaylight。
- 在2014年12月5日。由On.Lab开发的ONOS面世了。ONOS(Open Network Operating System)是一款同样采用Java语言编写,采用OSGi架构,同样分布式的控制平台产品。NOS底层模块直接借用FloodLight优秀的模块如Switch模块,不使用YANG语言建模,最新版本使用Raft作为分布式框架。
SDN控制器的架构
- SDN出现初期,控制平面的表现形式更多的是以单实例的控制器出现。实现SDN的协议也是以OpenFlow为主,所以在SDN发展初期,SDN控制器更多指的是OpenFlow控制器。SDN出现之后,ONF成立。ONF(Open Network Foundation),中文名为“开放网络基金会” ,是致力于推进SDN标准化的一个用户驱动的组织。在ONF的白皮书中,提出了SDN的架构标准,SDN架构1.0版本和1.1版本分别如图1和 图2所示。
SDN架构1.0版本
SDN架构1.1版本
- POX完全使用Python语言编写,采用与NOX一直的事件处理机制和编程模式,增加了多线程支持,由于Python简单易懂并拥有更好的拓展性,POX被研究人员广泛接受与使用。POX采用“发布、订阅”的编程设计模式,提供一系列接口与组件,具体详见图。
- Floodlight是基于Java语言的开源SDN控制器,当前支持的南向协议为OpenFlow1.0协议。Floodlight与Big Switch Networks开发的商用控制器Big Switch Controller的API接口完全兼容,具有较好的可移植性。
- OpenContrail 是由 Juniper 推出的基于 C++的 SDN 控制器,提供了用于网络虚拟化的基本组件。Open⁃ Contrail 提供了一套扩展 API 来配置、收集、分析网络 系统中的数据,可与 KVM、Xen 虚拟机管理程序协作。同时支持 OpenStack。OpenContrail 可应用在不同的网 络环境中主要应用于以下 2 个网络场景:1)云计算网络,主要有企业和运营商的私有云,以及云服务提供商的基础设施服务(lass)和虚拟专用云(VPC)。b)在运营商网络中的网络功能虚拟化(NFV),可以为运营商边界网络提供增值服务。 OpenContrail 主要由控制器和虚拟路由器(vRout⁃ er)组成。OpenContrail 系统的控制器主要包括配置节 点、控制节点、分析节点等 3 个组件。制器使用北向接口与 协调系统及上层业务通信使用 XMPP 协议与虚拟路 由器通信使用 BGP、Netconf 等协议与网关路由器和 物理交换机通信使用 BGP 和其他控制节点通信。
- Ryu是基于 Python 语言的 开源 SDN 控制器。提供的完备 API 有助于网络运营者高效便捷地开发 SDN 管理和控制应用。当前 Ryu 对很多管理网络设备的协议提供了支持,如 OpenFlow 协 议、Netconf 协议、OF-CONFIG 协议等多种南向协议。Ryu因其架构清晰,支持OpenFlow全部版本,有社区的Plug-in集成到OpenStack,性能良好和文档齐全等优点获得了许多SDN研究者的关注。
- opendayligh控制器:
基本的架构原则:- 运行时模块化和扩展化(Runtime Modularity and Extensibility):支持在控制器运行 时进行服务的安装、删除和更新;
- 多协议的南向支持(Multiprotocol Southbound):南向支持多种协议;
- 服务抽象层(Service Abstraction Layer):南向多种协议对上提供统一的北向服务接口。
- 开放的可扩展北向API(Open Extensible Northbound API):提供可扩展的应用API, 通过REST或者函数调用方式。两者提供的功能要一致;
- 支持多租户、切片(Support for Multitenancy/Slicing):允许网络在逻辑上(或物理上)划 分成不同的切片或租户。控制器的部分功能和模块可以管理指定切片。控制器根据所管理的分 片来呈现不同的控制观测面;
- 顶层:顶层由控制和监控网络行为的业务和网络逻辑应用构成,此外,复杂的解决方 案应用需要与云计算及网络虚拟化相结合
ODL设计原则、架构及依赖技术 - 中间层:SDN控制器框架层,其南向协议接口可以支持不同南向协议插件,这些协议插件动 态连接到SAL(Service Abstract Layer),SAL适配后再提供统一北向接口供上层应用调用。
- 底层:由物理或虚拟设备构成。
- onos控制器:
- onos架构专注于电信运营商领域控制器关键需求:高可扩展性,高性能,高实时性,高可靠性。
- onos架构专注于电信运营商领域控制器关键需求:高可扩展性,高性能,高实时性,高可靠性。
总结:
- 目前控制器的主要编程语言为 C++、Java 和 Py⁃ thon。基于 C++的控制器在处理性能上有较好的表现;基于 Java 的控制器有较为丰富的 API便于业务应 用的拓展;基于 Python 语言的控制器在网络编程方面 有较好的灵活性,易于开发,但效率较低。
- 最初的控制器 NOX 并不支持多线程,但随着 SDN 技术的不断发展,主流控制器均支持多线程技术, 这使得控制器的响应速度更快,并可对上层的不同业 务进行优先级设置。这些优点更便于管理人员应对数 据中心内部复杂的网络状况。 - - c)支持 Openstack 云管理平台已逐渐成为控制器 的主流设计趋势。SDN 与 Openstack 的结合可以更好 地对资源进行集中分配调度并对计算、存储和网络做 进一步整合,以实现自动部署、实时资源调度和快速故障排除,为云数据中心降 低了维护成本 。早 期 的 NOX、POX 控制器对 Openstack 是不支持的但之后的控制器均已支持 Openstack 平台。
- 控制器逐渐可支持多种南向接口协议。在早期的控制器设计中,如 NOX、POX、Floodlight 等控制器 均只支持单一的 OpenFlow1.0 协议,而对其他的南向协 议并不适配,使得目前数据中心内部绝大多数交换机 不能继续在 OpenFlow 网络环境中使用这就造成了实 际部署的困难,增加了运营成本。在之后的控制器设 www.docin.com 计中已注意到这一问题例如 OpenContrail、OpenDay⁃Light、Ryu 等控制器通过各自的技术手段对 BGP、Net⁃ conf、OVSDB、SNMP 等南向接口协议均有了很好的支 持,控制器通过对多种南向接口协议的支持可更好地 与底层交换设备进行信息交互,使得云数据中心内部 的组网更加灵活。