- SDN环境部署与OpenDaylight开发入门
- 程丽明
- 8559字
- 2025-02-22 06:39:54
第4章 现有SDN控制器简述
当前,SDN控制器已经比较成熟,种类也相当繁多,而且活跃的一些控制器项目还在不断发展之中,如OpenDaylight项目不到一年就发布一个新的版本。本章主要介绍当前主流的SDN控制器,包括开源控制器和商业控制器。有些商业控制器是在某个开源控制器的基础上优化和修改而来的,其中一些公司本身也是这个开源控制器的贡献成员之一。
本章在4.1节首先介绍最具影响力、活跃度最高的控制器项目OpenDaylight(ODL)。有许多商业控制器是基于ODL改造生成的。OpenDaylight项目中的很多子项目已经在商用领域得到了部署,成效不断。本书之后将着重介绍OpenDaylight项目的Controller子项目的相关开发。
本章在4.2节对开放网络操作系统ONOS(Open Network Operating System)项目进行介绍。ONOS是一款为服务提供商打造的基于集群的分布式SDN操作系统,具有可扩展性、高可用性、高性能以及南北向的抽象化,使得服务提供商能轻松地采用模块化结构来开发应用提供服务。
本章在4.3节对Floodlight项目进行介绍。Floodlight控制器是较早出现的知名度较广的开源SDN控制器之一,它实现了控制和查询一个OpenFlow网络的通用功能集,而在此控制器上的应用集则满足了不同用户对于网络所需的各种功能。
本章在4.4节对Ryu项目进行介绍。Ryu是一个基于组件的SDN网络框架,它是由日本NTT公司使用Python语言研发完成的开源软件,采用Apache License标准。Ryu提供了包含良好定义的API接口的网络组件,开发者使用这些API接口能轻松地创建新的网络管理和控制应用。Ryu支持管理网络设置的多种协议。
本章在4.5节对思科公司的SDN控制器进行介绍。思科公司的SDN控制器有两个:APIC控制器和Open SDN控制器。思科的APIC控制器在商业上有很大的影响力,在商业上得到了很好的部署。思科Open SDN控制器是一个OpenDaylight的商业级版本,通过基于网络基础设施标准的自动化来提供业务的灵活性。
本章在4.6节对Juniper网络(瞻博网络)发布的OpenContrail项目进行介绍。OpenContrail包含OpenContrail控制器和OpenContrail虚拟路由。OpenContrail控制器是一个逻辑上集中但是物理上分布的SDN控制器,为虚拟网络提供管理、控制和分析功能。OpenContrail虚拟路由是一个分布式的路由服务。
本章在4.7节对NOX项目进行介绍。NOX控制器是由斯坦福大学在2008年提出的第一款OpenFlow控制器,NOX是第一个实现的SDN控制器,它的早期版本(NOX-Classic)是由C++和Python两种语言实现的,其中NOX核心架构及其关键部分都是使用C++实现的,以保证性能。
本章在4.8节对POX项目进行介绍。POX控制器是由NOX控制器分隔演变而来的一款基于OpenFlow的控制器,是使用Python开发的。POX具有将交换机送来的协议包交给制定软件模块的功能。
本章在4.9节对Beacon项目进行介绍。Beacon是基于Java语言开发实现的开源控制器,依赖于OpenFlowJ项目,以高效性和稳定性应用在多个科研项目及实验环境中,除此之外,具有很好的跨平台性,并支持多线程,可以通过相对友好的UI界面进行访问控制、使用和部署。
本章在4.10节对Big Network项目进行介绍。Big Network是一款SDN商用控制器,由Big Switch网络公司推出。Big Switch网络公司将此控制器放入Open SDN Suite套件中,供数据中心运营商使用。
本章在4.11节对博科的Brocade SDN控制器进行介绍。2015年,博科推出基于Open Daylight代码研发的Brocade SDN控制器(原名称为博科Vyatta控制器),新版本控制器基于OpenDaylight项目进行了优化,添加了两个管理应用,以加强提供对SDN操作的支持。Brocade SDN控制器实际上就是OpenDaylight控制器的商用版。
本章在4.12节对Maestro控制器进行介绍。Maestro是莱斯大学于2011年的一篇学位论文中提出的用Java语言实现的一款基于LGPL V2.1开原协议标准的OpenFlow多线程控制器。Maestro主要应用于科研领域,具有很好的平台适应性,可以有效地在多种操作系统和体系结构上运行。
本章在4.13节对IRIS控制器进行介绍。IRIS是由ETRI研究团队创建的递归式SDN OpenFlow控制器,OpenIRIS是IRIS的一个开源版本。IRIS旨在解决SDN网络中可扩展性和可用性的问题。IRIS是在Beacon控制器和Floodlight控制器的基础上构建的。
本章在4.14节对Extreme公司的OneController控制器进行介绍。OneContrller控制器是Extreme公司基于开源控制器OpenDaylight的Helium SR1.1版本开发的。OneContrller控制器旨在提供一个开放、功能灵活加载或卸载、可扩展的平台,使得SDN和NFV的规则能达到任意规模大小。
最后,在4.15节对本章进行总结。
4.1 OpenDaylight控制器
OpenDaylight(ODL)项目是一个模型开放的、协同开放的开源SDN平台,使用Java语言创建,适用于任何规模的网络。OpenDaylight(ODL)项目旨在透明地推动软件定义网络(SDN)和网络功能虚拟化(NFV)的运用,同时促进不断创新。OpenDaylight项目由Linux Foundation(https://en.wikipedia.org/wiki/The_Linux_Foundation)主持,是SDN最大的开源平台,旨在实现SDN创建灵活、快速响应组织和用户需求的可编程网络的目标。OpenDaylight社区联合一个SDN公共平台的产业(诸如一起联合解决方案提供商、个人开发者、用户)向服务提供商、企业、大学和全球各地的各种组织提供了互操作、可编程的网络。
OpenDaylight项目图标如图4-1所示。

图4-1 OpenDaylight项目图标
OpenDaylight项目主要由运行在一个Java虚拟机(JVM)上的软件组成,能在任何适合Java实时运行环境(JRE)运行的操作系统和硬件上运行。OpenDaylight项目支持诸如OpenFlow网络标准协议这样的开源标准,向客户、合作商、开发者提供一个SDN产业级的开源框架和平台。
OpenDaylight项目的第一个版本为氢(H)版本,于2014年2月正式发布。氢(H)版本最主要的性能为开源控制器、虚拟overlay网络、协议插件和交换机设备升级。氢(H)版本包含3个子版本:基础版本Base Edition、虚拟化版本Virtualization Edition、服务商版本Service Provider Edition。但后来不再出现子版本,任何发布以统一的版本出现。2014年10月,氦(He)版本正式发布。2015年1月,锂(Li)版本正式发布。2016年2月,铍(Be)版本正式发布。2016年9月21日,在社区的积极参与下,硼(Bo)版本正式发布,在集群、云计算、NFV方面的功能和性能发力,使用更加方便。OpenDaylight项目的每一个版本在功能和框架上都有较大的变动,在技术上不断走向成熟,落地应用也越来越广,OpenDaylight项目正变得越来越强大。
OpenDaylight项目的框架不断完善,图4-2是硼Bo版本的框架图,图4-3是硼Bo版本的子项目依赖关系图,我们将在第5章向读者详细介绍。

图4-2 OpenDaylight项目(硼Bo版本)框架

图4-3 OpenDaylight项目(硼Bo版本)的子项目依赖关系图
4.2 ONOS控制器
ONOS是Open Network Operating System的缩写,即开放网络操作系统。ONOS是一款为服务提供商打造的SDN操作系统,具有可扩展性、高可用性、高性能以及南北向的抽象化,使得服务提供商能轻松地采用模块化结构来开发应用提供服务。ONOS是一款基于集群的分布式操作系统,当网络规模和应用需求发生变化时,ONOS能在水平方向上随之快速变化以适应业务需要。ONOS开放网络操作系统图标如图4-4所示。

图4-4 ONOS开放网络操作系统图标
ONOS使服务提供商采用SDN方案,以运用到运营级的服务和网络革新上。旧有的网络提供的服务灵活性十分有限,并且缺乏敏捷性,控制平面和硬件是厂商封闭的。ONOS将这样封闭的网络进行一个服务的变革,通过ONOS的运营商级的SDN控制平面,旨在提供“网络功能即服务”的能力。ONOS能和其他SDN控制器一样使用白盒交换机(交换机和服务器),并且可以将现有的网络迁移到新网络中。ONOS对服务提供商网络的愿景如图4-5所示。

图4-5 ONOS对服务提供商网络的愿景
ONOS采用SDN控制器的典型架构,其突出优势是控制器是分布式核心。ONOS控制器分为5层,包括应用层(Apps)、北向核心API(NB Core API)、分布式核心(Distributed Core)、南向核心API(SB Core API)、转发层(包括适配器Adapters和协议Protocols)。ONOS架构如图4-6所示。

图4-6 ONOS架构
ONOS是由ON.LAB组织创建的,它是非常有影响力的SDN控制器之一。基于坚实的架构建立的平台现在正不断地成熟完善,目前已经能提供丰富的功能并应用于生产环境中。ONOS的社团成员不断增加,至今已超过50个合作伙伴,这些伙伴中有些正对项目做出贡献,比如一些比较有趣的用例——CORD。
4.3 Floodlight控制器
Floodlight项目是一个OpenFlow控制器(Floodlight Controller)和在此控制器上的应用集。Floodlight项目提供了开源代码、开放的标准和开放的API。Floodlight项目图标如图4-7所示。

图4-7 Floodlight项目
Floodlight控制器是较早出现的知名度较广的开源SDN控制器之一,它实现了控制和查询一个OpenFlow网络的通用功能集,而在此控制器上的应用集则满足了不同用户对于网络所需的各种功能。Floodlight的支持团队主要由Big Switch网络公司的工程师组成。
Floodlight能管理较多的支持OpenFlow标准的交换机、路由器、虚拟交换机、访问节点。GitHub平台上Floodlight的版本已更新至v1.2,这一版本强调系统的鲁棒性,提供更丰富的核心模块。Floodlight提供IPv6、链路延迟、OF-DPA、消息监控等功能。Floodlight能支持生产环境下的OpenFlow 1.0和OpenFlow 1.3协议;在实验环境下,除了上述的1.0和1.3协议外,还支持OpenFlow 1.1、OpenFlow 1.2、OpenFlow 1.4协议。Floodlight的核心是OpenFlowJ-Loxigen(简称为OpenFlowJ-Loxi)生成的Java库,这个核心将OpenFlow协议简化,并通过一个通用的API来使用。
图4-8显示了Floodlight控制器、使用Floodlight编译的应用(Java模块)、在Floodlight REST API上面的应用这3者之间的关系以及各模块的组成。图4-9所示为Floodlight搭建的SDN网络。

图4-8 Floodlight架构图

图4-9 Floodlight搭建的SDN网络
Floodlight的重点特性有:
● 提供了一个模块加载系统,使得扩展和增强网络变得更为简单。
● 设置简单,使用最小的依赖。
● 支持大多数的虚拟OpenFlow交换机和物理OpenFlow交换机。
● 可以处理混合OpenFlow和非OpenFlow网络,可以管理多个OpenFlow硬件交换机的“孤岛”。
● 从底层开始设计的多线程架构,得以实现高性能。
● 支持OpenStack(链接的)云的业务流程平台。

Floodlight控制器总体规模不算复杂,使用Java编写,在学术上得到较大范围的使用。但由于其更新较慢,支持工业相关的功能不齐全,因此较少直接应用在工业环境中。另外,我们将在第10章对Floodlight控制器的安装和使用做简要介绍。
Floodlight控制器的学习参考资源如下。
(1)Floodlight的官方网站地址:http://www.projectfloodlight.org/。
(2)github.com上Floodlight控制器项目的地址:https://github.com/floodlight/floodlight。
(3)Floodlight的wiki地址:https://floodlight.atlassian.net/wiki/display/HOME/Welcome+to+OpenFlow+Hub+and+Project+Floodlight+Documentation。
4.4 Ryu控制器
Ryu是一个基于组件的SDN网络框架,它是由日本NTT公司使用Python语言研发完成的开源软件,采用Apache License标准。Ryu提供了包含良好定义的API接口的网络组件,开发者使用这些API接口能轻松地创建新的网络管理和控制应用。Ryu支持管理网络设置的多种协议,如OpenFlow(支持OpenFlow 1.0、OpenFlow 1.1、OpenFlow 1.2、OpenFlow 1.3、OpenFlow 1.4、OpenFlow 1.5、Nicira扩展)、NetConf、OF-config等。Ryu无须ovs-vsctl和ovsdb-client组件即可直接对Open vSwitch进行配置。Ryu的图标如图4-10所示。

图4-10 Ryu
Ryu已成功实现与其他项目的集成,比如它是最早与OpenStack集成的SDN控制器之一,还与Zookeeper(HA)、IDS实现了集成。Ryu灵活简洁的代码、多种虚拟和物理交换机的支持、齐全的文档成为其核心优势,使其成为最早在工业界得到应用的控制器之一。不过,最近随着OpenDaylight和其他控制器的不断成长、新兴控制器的持续出现,其地位已不如以前。
Ryu的架构如图4-11所示。Ryu的代码主要由app、base、cmd、contrib、controller、lib、ofproto、services、tests、topology组成。

图4-11 Ryu架构
我们将在第11章对Ryu控制器的安装和使用做简要介绍。
Ryu控制器的学习参考资源如下。
(1)Ryu控制器的官方网站地址:https://osrg.github.io/ryu/。
(2)Ryu控制器在github.com上的项目地址:https://github.com/osrg/ryu。
4.5 思科的APIC控制器和Open SDN控制器
思科公司主要推出的SDN控制器中最有名的两款控制器为思科APIC控制器(思科应用策略基础架构控制器)和思科Open SDN控制器。其中,APIC控制器是由思科在OpenDaylight中贡献的项目BGP(基于组的策略)触发而来的。
4.5.1 思科APIC控制器
思科APIC控制器采用应用为中心的策略模型,它分离了关于应用连接要求的信息与关于底层网络基础设施的详细信息,可以统一自动化和管理以应用为中心的基础架构(ACI)阵列。思科APIC可以集中访问所有阵列信息、优化应用生命周期,以提高扩展性和性能,以及支持对物理和虚拟资源进行灵活地应用设置。思科APIC控制器是由控制器集群组成的一个分布式系统,提供单点控制、核心API、全球数据中央存储库、思科ACI策略数据库,是一个外部端点与控制器相连、基于组策略以应用为中心的分布式overlay系统。思科ACI是一个高速、多叶和脊柱(leaf-spine)的架构,如图4-12所示。

图4-12 APIC策略模块
思科APIC控制器能对网络、安全和网络服务自动化实现应用级集中式控制,在物理、虚拟和云基础架构上提供通用的策略和管理框架。思科APIC控制器采用开放式架构(开放式API和标准),可集成第4到第7层服务、虚拟化和管理厂商,支持OpenStack,支持开发操作轻松落实策略可视性和控制力。思科APIC控制器还可实现应用感知功能、移动性、集成可视性和控制力,妥善落实多重租赁安全、服务质量(QoS)和高可用性。
4.5.2 思科Open SDN控制器
思科Open SDN控制器是一个OpenDaylight的商业级版本,通过基于网络基础设施标准的自动化来提供业务的灵活性。Open SDN控制器设计为一个高度可扩展的SDN应用平台,将复杂的异构网络管理工作进行抽象,因此改善了服务发布并降低了运营成本。
Open SDN控制器平台框架如图4-13所示。

图4-13 Open SDN控制器平台框架图
4.5.3 思科SDN控制器的学习参考资源
APIC控制器的学习参考资源如下。
(1)APIC控制器的官方网站地址:http://www.cisco.com/c/zh_cn/products/cloud-systems-management/application-policy-infrastructure-controller-apic/index.html。
(2)Open SDN控制器的官方网站地址:http://www.cisco.com/c/zh_cn/support/cloud-systems-management/open-sdn-controller/tsd-products-support-series-home.html
4.6 OpenContrail控制器
2013年,Juniper网络(瞻博网络)发布了一款SDN控制器——OpenContrail。OpenContrail包含OpenContrail控制器和OpenContrail虚拟路由。OpenContrail控制器是一个逻辑上集中但物理上分布的SDN控制器,为虚拟网络提供管理、控制和分析功能。OpenContrail虚拟路由是一个分布式的路由服务,运行在虚拟服务器的hypervisor上,将网络从一个数据中心的网络物理路由器和交换机扩展成一个虚拟的基于虚拟服务器主机之间通信的Overlay网络。
OpenContrail控制器图标如图4-14所示。

图4-14 OpenContrail控制器
在OpenContrail中,虚拟路由器和hypervisor紧密结合,借助MPLS over GRE/UDP或VxLAN实现Overlay网络。OpenContrail的跨数据中心虚拟化是借助MPLS L3 VPN或者EVPN实现的。OpenContrail控制器的架构图如图4-15所示。

图4-15 OpenContrail控制器架构图
OpenContrail控制器一个突出的特点是物理上分布。OpenContrail控制器能很好地部署在分布式环境中,并较容易地实现负载均衡,并且能做到冗余,同时保证高可用性。这一特点使得OpenContrail控制器能运用在大规模的环境中,较好地在实际的生产环境中得到运用。OpenContrail控制器物理环境需求如图4-16所示。

图4-16 OpenContrail控制器物理环境需求
OpenContrail控制器的学习参考资源如下。
(1)OpenContrail控制器的官方网站地址:http://www.opencontrail.org/。
(2)OpenContrail控制器在github.com网站上的地址:https://github.com/Juniper/contrail-controller。
4.7 NOX控制器
NOX控制器是由斯坦福大学在2008年提出的第一款OpenFlow控制器,NOX是第一个实现的SDN控制器,它的早期版本(NOX-Classic)是由C++和Python两种语言实现的,其中NOX核心架构及其关键部分都是使用C++实现的,以保证性能。NOX只能支持单线程操作,控制器提供相应的编程接口,开发人员可以使用C++或者Python语言在这些接口上实现自己的应用。这个版本已经开源了包括hub、switch、topology和route在内的多种应用。NOX搭建的SDN网络如图4-17所示。

图4-17 NOX搭建的SDN网络
NOX于2015年5月11日发布了新版本(1.9.2-core-beta),新版本完全由C++实现,支持OpenFlow 1.0协议,并且提供了多线程的支持。由于C++语言的灵活性、高效性,并且新版本增加了多线程支持,其性能有了很大的提升,但美中不足的是,新版的NOX只提供了基本框架。由于它在代码结构和实现语言上有了一定的调整,因此原来版本中无法直接移植。最新版本的NOX只有switch一个应用,实现了learning switch的功能。
NOX在github.com上的项目地址为https://github.com/noxrepo/nox,已经多年没有更新了。
4.8 POX控制器
POX控制器是由NOX控制器分隔演变而来的一款基于OpenFlow的控制器,是使用Python开发的,如图4-18所示。POX具有能将交换机上送来的协议包交给制定软件模块的功能。

图4-18 POX控制器
POX推出后,由于Python简洁、易读以及扩展性好等优点,得以快速发展和广泛的应用。但是随着后来众多控制器的兴起,POX控制器同NOX控制器一样,受到的关注越来越少,在github.com上的项目(地址:https://github.com/noxrepo/pox)也已经很久没有更新了。
4.9 Beacon控制器
Beacon在2010年起源于斯坦福大学,由Erickson等人设计开发。Beacon是基于Java语言开发实现的开源控制器,依赖于OpenFlowJ项目,以高效性和稳定性应用在多个科研项目及实验环境中,除此之外,具有很好的跨平台性,并支持多线程,可以通过相对友好的UI界面进行访问控制、使用和部署。
Beacon采用Java的Spring和Equinox编程模型,可以提供OSGi用户界面。由于OSGi的特性,Beacon的服务以Bundle组合的方式提供,这解耦了Beacon的各个功能块,便于进一步地开发,能方便地进行使用和部署。
Beacon的主要模块如下。
● Core模块:Core模块是Beacon的核心模块,负责整个控制器的启动、停止、与交换机的连接等核心内容。Core模块提供了一个IBeaconProvide,其他的bundle通过调用该接口来获取相应的Packet_In消息。
● Topology模块:Topology模块是整个控制器进行网络控制和管理的基础,通过此模块,控制器可以得到整个网络的网络设备连接情况。Beacon采用标准的LLDP协议实现。
● Device-Management模块:该模块获取终端主机与交换机的连接关系,让控制器得到一张包含交换机和主机的全局网络连接图。
● Learning-Seitch模块:该模块实现了简单的交换机功能,通过对到达数据包地址的学习,进而形成一个地址表(MacTable),实现数据包的查表转发。这是一个基本功能,几乎所有的开源控制器都会对其进行实现。
● Routing模块:该模块的实现主要在两个bundle中,即net.beaconcontroller.routing和net.beaconcontroller.routing.apsp。前者是数据包路由主要流程的实现,后者是对最短路径路由算法的实现。Beacon中是采用一种基于权重的所有点对最短路径路由算法实现的。
Beacon控制器的控制框架如图4-19所示。

图4-19 Beacon控制器的控制框架图
4.10 Big Network控制器
Big Switch网络公司推出一款称为Big Network的SDN商用控制器。Big Switch网络公司将此控制器放入Open SDN Suite套件中,供数据中心运营商使用。Big Switch网络公司图标如图4-20所示。

图4-20 Big Switch网络公司
Big Network控制器是基于Floodlight项目开发的,其遵守OpenFlow协议,提供统一网络智能的、企业级的可扩展性、高可用性。Big Switch网络公司采用如OpenFlow这样的行业标准协议来从底层网络数据平面的元素创建一个通用的抽象和统一的数据模型,当与开源和发布的APIs结合时,Big Network控制器能够提供一个灵活且可扩展的平台以部署网络应用。Big Network控制器的部署位置图如图4-21所示。

图4-21 Big Switch控制器的部署位置图
Big Switch控制器支持多达1000个网络设备,支持最高每秒25万个新主机连接,可以每秒提供60万个OpenFlow更新。另外,Floodlight控制器主要也是由Big Switch提供支持。Big Network Controller与Floodlight控制器API完全兼容,针对Floodlight而写的应用程序可以和商业版本的Big Switch控制器进行互操作。
Big Network控制器的学习参考资源如下。
Big Network控制器的官方网站地址:http://www.bigswitch.com/products/SDN-Controller。
4.11 博科的Brocade SDN控制器
2015年,博科推出基于Open Daylight代码研发的Brocade SDN控制器(原名称为博科Vyatta控制器),新版本控制器基于OpenDaylight项目进行了优化,添加了两个管理应用以加强对SDN操作的支持。Brocade SDN控制器实际上就是OpenDaylight控制器的商用版,如图4-22所示。

图4-22 Brocade SDN控制器
Brocade SDN控制器旨在客户迁移至SDN环境时最小化风险、保护客户资产,为网络运营商带来可编程网络的灵活性,为多厂商和虚拟机提供一个普通平台,使得客户能快速开发并专注于应用。Brocade SDN控制器平台如图4-23所示。

图4-23 Brocade SDN控制器平台
Brocade SDN控制器是一个经充分测试、文档完整、质量保证的OpenDaylight版本。它的特征主要包括:
● 平台无关的,无关主机操作系统和虚拟管理程序,能够管理来自各厂商的物理和虚拟网络平台。
● 友好的用户界面和安装工具,部署简单省时。
OpenDaylight控制器的更新极快(不到一年更新一次),这使得Brocade SDN控制器的大部分核心组件的更新速度也是非常明显的,另外Brocade SDN控制器也配备了反应迅速的技术支持团队,这都是Brocade SDN控制器的核心优势。
Brocade SDN控制器的学习参考资源如下。
Brocade SDN控制器的官方网站地址:http://www.brocade.com/en/products-services/software-networking/sdn-controllers-applications/sdn-controller.html。
4.12 Maestro控制器
Maestro是莱斯大学于2011年的一篇学位论文中提出的用Java语言实现的一款基于LGPL V2.1开原协议标准的OpenFlow多线程控制器。Maestro主要应用于科研领域,具有很好的平台适应性,可以有效地在多种操作系统和体系结构上运行。到目前为止,Maestro最新开源版本为2011年5月发布的V0.2.1,其实现的应用主要包括learning switch、discovery、location management、route等,而对于命令模式,只是实现了一些简单的display操作,Maestro项目的更新也是相当缓慢的。Maestro控制器结构如图4-24所示。

图4-24 Maestro控制器结构图
Maestro控制器主要执行3个流程。Maestro通过与每个交换机的TCB连接向交换机网络发送或从其接收OpenFlow消息,其中Input Stage和Output Stage分别处理底层套接字缓存的读取和写入,并将原始OpenFlow消息转化为高层次数据结构或将高层次数据结构转换为OpenFlow消息。这些底层功能随着OpenFlow协议标准更新而变化,上层功能则以应用程序的形式不断地更新和重新实现,编程人员可以灵活修改这些应用程序的行为或添加新的应用程序。
交换机加入网络中时会建立与Maestro的TCP连接,Discovery模块周期性地发送探测消息,并通过LLDP发现并识别交换机,通过接收来自交换机的对探测报文的回应发现整个网络的拓扑结构。而当拓扑改变时,Discovery会调用Intradomain Routing应用修改路由表信息。
4.13 IRIS控制器
IRIS是由ETRI研究团队创建的递归式SDN OpenFlow控制器,OpenIRIS是IRIS的一个开源版本,如图4-25所示。IRIS旨在解决SDN网络中可扩展性和可用性的问题。IRIS使用Java语言编写,在类Beacon控制器基于NIO的事件句柄上创建。在IO引擎之上,IRIS引入了许多Floodlight控制器核心模块和应用模块(包含学习交换机、链路发现、拓扑管理、设备管理、转发、防火墙、统计流实体发布)。IRIS的目标是创建一个具有水平扩展运营商级别的网络、高可用性及透明故障恢复性能、基于OpenFlow的多域支持的递归网络抽象的SDN控制器。

图4-25 IRIS控制器
IRIS的控制器架构如图4-26所示。

图4-26 IRIS控制器架构图
IRIS控制器的学习参考资源如下。
(1)IRIS控制器的官方网站地址:http://openiris.etri.re.kr/。
(2)IRIS控制器在github.com上的项目地址:https://github.com/openiris/IRIS。
4.14 Extreme公司的OneController控制器
OneContrller控制器是Extreme公司基于开源控制器OpenDaylight的Helium SR1.1版本开发的。OneContrller控制器旨在提供一个开放、功能灵活加载或卸载、可扩展的平台,使得SDN和NFV的规则能达到任意规模大小。应用程序可以使用OneContrller来收集网络智能,运行算法以进行分析,并且利用OneContrller在整个网络内制定新的规则。OneContrller控制器的架构图如图4-27所示。

图4-27 OneController控制器架构图
OneController控制器的学习参考资源如下。
OneController控制器的官方网站地址:http://documentation.extremenetworks.com/sdn_wired_install_user_guide/sdn_wired_install_user_guide/c_onecontroller_overview.shtml。
4.15 本章总结
SDN控制器是SDN网络的核心,是SDN的“大脑”。SDN控制器提供了对于整个网络的一个集中化的视图,使得网络管理员能直接命令网络底层设施(如交换机和路由器)根据所指定的细粒度的要求来处理网络流量(如转发数据包、流量控制等)。这种集中化智能的设计简化了网络服务的提供,优化了性能,实现了细粒度的策略管理。SDN控制器层通过SDN北向接口与SDN应用层通信,通过SDN南向接口与SDN基础架构层通信。
当前市场上SDN控制器的种类繁多,包括开源的SDN控制器和商用的SDN控制器。其中最为出名的是OpenDaylight项目,其他出名的项目还包括ONOS项目、Floodlight项目、Ryu项目等,本章对于当前市场上最为出名的14种控制器都进行了简要介绍。本书将在随后的章节中重点对OpenDaylight项目进行介绍,包括其整体项目和其子项目Controller项目(第5章和第6章)、安装指南(第8章)、基于MD-SAL开发指南(第三篇)和北向开发指南(第四篇)。另外,本书在第9章、第10章、第11章分别对ONOS项目、Floodlight项目、Ryu项目的控制器安装进行了介绍。