OpenDaylight应用指南
上QQ阅读APP看书,第一时间看更新

1.2 控制器概述

从SDN的架构来看,控制器是SDN技术的核心,具有“承上启下”的作用,控制器向下对转发面的行为进行控制和管理,向上将网络能力进行抽象,通过开放的API支持上层不同业务的网络需求。而NFV技术主要集中在解决网元功能的虚拟化上,需要控制器配合解决业务选路方法、流量控制和性能监控等问题。因此,控制器在SDN和NFV技术中都具有非常重要的地位。

目前,SDN控制器有两大阵营:商用控制器和开源控制器。不同的SDN控制器在实现语言和设计目标上有着一定的差异,因此,各自具有不同特点和优势。根据南向接口协议的不同,可以将其大致分为两类:支持OpenFlow的SDN控制器和支持多种南向接口协议的SDN控制器。

1.2.1 商用控制器

随着SDN/NFV技术的发展,各大设备厂商、IT厂商纷纷发布了自己的商用控制器,如思科(Cisco)的CiscoOne、华为的SNC、Brocade的Vyatta SDN控制器、Juniper的Contrail、华三的VCF等。

表1-1列出了市场上主流的SDN商用控制器产品的一些相关信息,包括支持的南向接口、北向接口、控制器产品原型等。从该表中可以看出:大多数的商用控制器都是基于开源控制器OpenDaylight开发的,南向接口大多支持OpenFlow,而且大多都会在北向提供开放接口供用户开发应用。

表1-1 商用控制器对比

由于不同厂商对标准的理解不同,SDN商用控制器还存在一定程度的互通性问题,主要表现为以下两个方面:一方面,不同厂商的控制器之间难以互操作;另一方面,部分交换机只能和固定的控制器互通,和其他厂商的控制器无法成功建立安全通道[7]。这些问题的解决需要社会各界的共同努力。

1.2.2 开源控制器

由于使用商用控制器依然需要在一定程度上依赖厂商,且商用控制器本身还存在互通问题,研究和了解开源控制器、基于开源控制器进行定制开发已经成为了目前业界的热门做法。现有开源控制器有OpenDaylight、Floodlight、Ryu、NOX/POX、OpenContrail、Trema、ONOS等,以下简单介绍几款主流的开源控制器。

1.Floodlight

Floodlight是创业公司Big Switch在2012年2月发布的开源控制器。Floodlight是一款基于Java实现,在Apache软件许可证下免费发布,可与任何支持OpenFlow的网络设备互操作的控制器,目前Floodlight仅支持OpenFlow 1.0(OF 1.0)和OpenFlow 1.1(OF 1.1)。Floodlight具有以下特点:

• 使用模块化加载的核心架构;

• 通过OpenStack Quantum插件实现与OpenStack的对接;

• 北向的REST API支持Java和Jython等。

2.Ryu

Ryu是日本运营商NTT的实验室支持开发的一款开源SDN控制器。该控制器是取名于日语“flow”的意思,完全由Python语言编写,具有以下几大特点。

• 系统架构完善,支持插件式开发。

• 提供OpenStack Quantum插件,支持OpenStack。Ryu分为两部分:Ryu-manager和Ryu-client。其中,Ryu-manager是运行在OpenStack的控制节点,用于处理开发者编写的网络集中控制逻辑,并将任务分发给下面的计算节点。计算节点使用Ryu-client的API为OpenvSwitch部署相应的配置策略。

• 比较全面地支持OpenFlow协议,目前已经支持OF 1.0、OF 1.2、OF 1.3以及OF 1.4等版本的协议。除此之外,还能支持OF-Config、NETCONF等控制协议。

3.ONOS

ONOS是2014年12月由斯坦福大学和加州大学伯克利分校SDN创立的开源社区,AT&T、NTT等电信运营商为其主要的合作伙伴。ONOS旨在设计一款可用性高、性能优、抽象性和扩展性好的运营商级的开源SDN网络操作系统。ONOS具有以下几大特点:

• 全分布式控制架构,支持分布式统一逻辑网络视图;

• 支持OpenFlow和白盒硬件;

• 支持插件式管理等。

4.OpenContrail

OpenContrail是由Juniper公司开发的一个用于软件定义网络的集成软件系统。该软件系统可以在OpenStack虚拟云的管理平台下实现不同虚拟机之间的虚拟网络的自定义,实现OpenStack中不同租户之间虚拟网络的隔离和控制,还提供防火墙入侵检测系统、深度包检测、数据缓存等网络管理功能。OpenContrail系统的主要组件有:WebUI、configuration node、control node、vRouter和analytics node。

• WebUI:提供一个可视化的界面,方便管理者管理虚拟网络并监控网络的状态。

• configuration node:负责接收来自WebUI通过REST API发送的配置信息,将配置信息通过Schema转换器进行转换后通过IF-MAP服务将配置信息发送到control node上。

• control node:负责订阅并收取configuration node转换后的IF-MAP(Interface for Metadata Access Point)配置信息。

• vRouter:是OpenContrail系统配置的末端节点,它接收XMPP服务器发送的配置信息,将其解析后存入本地的数据库中,然后根据数据库中的配置信息来调整网络的转发和配置。

• analysis node:负责收集configuration node、control node和vRouter上的状态信息,通过Sandesh协议的方式进行数据传递。analytics node提供REST API,可以通过访问接口获得OpenContrail系统的状态信息。

OpenDaylight是目前备受瞩目的开源控制器之一,也是本书的重点,第1.2.3节将简单介绍OpenDaylight控制器(controller)的技术特点,使读者从宏观上了解OpenDaylight控制器。第3章将详细介绍OpenDaylight中的控制器项目,包括基础架构、组成模块、安装环境、开发流程等。

1.2.3 OpenDaylight控制器概述

OpenDaylight是一款基于Java开发的控制器,其项目架构与第1.1.1节提到的SDN架构总体上是一致的,但不包括最底层的基础设施层,也就是说OpenDaylight将不涉及转发面组件的工作,如图1-5所示[8]。总体来看,OpenDaylight具有以下几大特点。

图1-5 OpenDaylight架构分析

• 南向接口不仅支持OpenFlow,还支持SNMP、PCEP、BGP-LS、OF-Config等其他标准化协议,甚至允许出现私有化接口。

• 引入了业务抽象层(SAL),这使得上下层模块之间的调用可以相互隔离,屏蔽多种南向协议的差异,为上层的功能模块提供一致性服务。

• 北向提供开放可扩展的API,用户可根据需要通过调用函数或者REST接口开发应用。

• OpenDaylight具有模块化、可扩展的控制器核心。采用开放服务网关(Open Service Gateway Initiative, OSGi)体系结构,解决功能组件之间的隔离问题,实现代码和功能的灵活加载,并可支持运行时业务或应用的安装、更新、删除等插拔操作。

• 使用YANG工具可直接生成业务管理的“骨架”,开发者只需专注于具体业务,根据业务驱动模型工具来设计接口,实现业务功能。

• OpenDaylight拥有一个开源的分布式数据网格平台,该平台不仅能实现数据的存储、查找和监听,更重要的是它使得OpenDaylight支持控制器集群。