1.阅读
了解SDN控制器的发展
了解ryu控制器
了解onos控制器
了解opendaylight控制器
- https://pan.baidu.com/s/1eSfYdNW?qq-pf-to=pcqq.c2c
- https://pan.baidu.com/s/1jGF2fIY?qq-pf-to=pcqq.c2c
2.书写博客
文献阅读时,注意比较各个控制器之间的实现技术异同。书写一篇博客,博客内容为,简单表述控制器的架构技术。
- SDN 控制器设计要素 控制器是整个软件定义网络的核心是连接下层
基础交换设备与上层应用的桥梁。一方面控制器可对 底层转发设备进行统一的监测与控制通过南向接口 协议进行链路发现、拓扑管理、流表下发等行为另一 方面控制器可向上层应用提供标准的北向接口通过 这些接口上层应用可以对底层网络进行有效的资源 调度与配置以实现对网络自动、灵活的管控。SDN 控 制器应具有如下要素。- a)网络虚拟化
- b)网络编程能力
- c)网络隔离能力
- d)可靠性
- e)处理性能
- f)网络安全性
基于对系统模块化、开放的可扩展北向接口、多协 议的南向支持、控制器之间的东西向交互等方面的综合考虑。控制器基本架构应包括核心功能层和网络功能层两方面内容。控制器基本架构如图所示
SDN出现初期,控制平面的表现形式更多的是以单实例的控制器出现。实现SDN的协议也是以OpenFlow为主,所以在SDN发展初期,SDN控制器更多指的是OpenFlow控制器。SDN出现之后,ONF[1]成立。ONF(Open Network Foundation),中文名为“开放网络基金会” ,是致力于推进SDN标准化的一个用户驱动的组织。在ONF的白皮书中,提出了SDN的架构标准,SDN架构1.0版本和1.1版本分别如图所示。 核心功能层主要提供控制器所需的最基本功能。 控制器首先要完成协议适配功能这对于灵活部署
SDN 非常重要需要适配的协议主要有南向接口协议 和东西向接口协议。协议适配工作完成后。控制器需 要提供用于支撑上层应用开发的功能。主要包括模块 管理、事件机制和资源数据库等。网络功能层以提供基础 的网络功能。网络功能层主要包含交换机管理、主机 管理、拓扑管理、路由转发策略和虚网划分等模块。第一款SDN控制器是NOX,目前NOX的社区状态已经不再活跃。在早期的SDN论文中,NOX作为唯一的控制器,发挥了重要的作用。NOX给后来的控制器开发提供了很好的范例,高层级的编程架构。它是一款基于 OpenFlow 协议的控制器早期版本的底层模块使用 C++编程语言开发。上层应用使用 C++和 Python 编程语言共同实现。 NOX 的出现在很大程度上推动了 SDN 技术的发展是早期 SDN 领域众多研究项目的基 础。2011 年斯坦福的研究人员又推出了基于 Python 语言的 POX 控制器。 POX 完全使用 Python 语言编写采用与 NOX 一致 的事件处理机制和编程模式增加了多线程支持。由 于 Python 简单易懂并拥有更好的拓展性POX 被研究 人员广泛接受与使用。
Floodlight 是 Big Switch Networks 公司开发的基于 Java 语言的开源 SDN 控制器其在 Apache2.0 开源标准 软 件 许 可 下 可 免 费 使 用 当 前 支 持 的 南 向 协 OpenFlow1.0 协议。Floodlight 与 Big Switch Networks 开 发的商用控制器 Big Switch Controller 的 API 接口完全兼容具有较好的可移植性。Floodlight 的日常开发与 维护工作主要由其开源社区进行支持。 Floodlight 使用模块化的架构来实现控制器的功 能和应用可直接在网络中部署实现数据转发、拓扑发 现等基本功能。Floodlight 使用 WebUI 管理界面用户 可以通过管理界面来查看连接的交换机信息、主机信 息、实时的网络拓扑信息。上层应用和控制器通过 Ja⁃ va 接口或 REST API 方式交互Floodlight 架构如图所示,主要模块如表所示。
Ryu是日本NTT公司开发的模块化的控制器。基于 Python 语言的 开源 SDN 控制器。提供的完备 API 有助于网络运营者高效便捷地开发 SDN 管理和控制应用。当前 Ryu 对很 多管理网络设备的协议提供了支持,如 OpenFlow 协 议、Netconf 协议、OF-CONFIG 协议等多种南向协议。Ryu因其架构清晰,支持OpenFlow全部版本,有社区的Plug-in集成到OpenStack,性能良好和文档齐全等优点获得了许多SDN研究者的关注。 Ryu 架构如图 所示。尤其值得说明的是Ryu 是基 于组件的框架这些组件均以 Python 模块的形式存在。目前 Ryu 包含的组件功能说明如表 3 所示。
penContrail 是由 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 和其他控制节点通信。图 4 为 OpenContrail 的系统架构图。
OpenDaylight的诞生意味着SDN进入一个崭新的时期。此时SDN的概念发生了改变。作为 SDN 架构的核心组件,OpenDaylight 的目标是降低网络运营的复杂度,扩展现有网络架构 中硬件的生命期同时还能够支持 SDN 新业务和新能 力的创新。OpenDaylight 开源项目提供了开放的北向 API,同时支持包括 OpenFlow 在内的多种南向接口协议,底层支持传统交换机和 OpenFlow 交换机。 OpenDay⁃ Light 总体架构如图 5 所示。表 4 简单介绍了 OpenDayLight 的主要组件。
然而目前最神秘,最出名的控制应该不是以上提到的任何一个控制器,而是Google的分布式控制器ONIX,ONIX目前没有开源,相关资料非常少。目前由Nicira、NTT和Google共同开发。除了ONIX之外,还有许多闭源的商业控制器,如HP的VAN(Virtual Applications Networks)控制器,武汉绿网的GNflush等,更多商业控制器的内容可参考SDxCentral的SDN-Controller-Report 2015B[4]。
3.控制器的相关比较
上文对目前主流的 SDN 控制器进行了详细的分析与介绍,剖析了各种控制器的基本架构和功能组件,下面将从研究背景、支持的南向接口协议、是否支持多线程、是否能够使用 Openstack 云管理平台进行管控、 是否可以实现多平台支持等多个角度进行对比分析, 找出各种控制器的异同点对比情况如表 5 所示。
通过对表 5 进行分析,可得到如下结论。
- a)目前控制器的主要编程语言为 C++、Java 和 Py⁃ thon。基于 C++的控制器在处理性能上有较好的表现;基于 Java 的控制器有较为丰富的 API便于业务应 用的拓展;基于 Python 语言的控制器在网络编程方面 有较好的灵活性,易于开发,但效率较低。
- b)最初的控制器 NOX 并不支持多线程,但随着 SDN 技术的不断发展,主流控制器均支持多线程技术, 这使得控制器的响应速度更快,并可对上层的不同业 务进行优先级设置。这些优点更便于管理人员应对数 据中心内部复杂的网络状况。 - - c)支持 Openstack 云管理平台已逐渐成为控制器 的主流设计趋势。SDN 与 Openstack 的结合可以更好 地对资源进行集中分配调度并对计算、存储和网络做 进一步整合,以实现自动部署、实时资源调度和快速故障排除,为云数据中心降 低了维护成本 。早 期 的 NOX、POX 控制器对 Openstack 是不支持的但之后的
控制器均已支持 Openstack 平台。 - d)控制器逐渐可支持多种南向接口协议。在早期的控制器设计中,如 NOX、POX、Floodlight 等控制器 均只支持单一的 OpenFlow1.0 协议,而对其他的南向协 议并不适配,使得目前数据中心内部绝大多数交换机 不能继续在 OpenFlow 网络环境中使用这就造成了实 际部署的困难,增加了运营成本。在之后的控制器设 www.docin.com 计中已注意到这一问题例如 OpenContrail、OpenDay⁃
Light、Ryu 等控制器通过各自的技术手段对 BGP、Net⁃ conf、OVSDB、SNMP 等南向接口协议均有了很好的支 持,控制器通过对多种南向接口协议的支持可更好地 与底层交换设备进行信息交互,使得云数据中心内部 的组网更加灵活。
SDN开源控制器除了这些比较出名的之外,也有其他用户比较少的控制器,如Trame,FlowER, LOOM等。笔者参考SDxCentral最新的SDN控制器的数据,将目前SDN开源控制器是否活跃情况列举如下表,先后顺序无关。