1、SDN 控制器 OpenDaylight 技术研究【摘要】 自动化、信息化和互你你你*/动化的智能电网需要一个更智慧的网络。SDN 软件定义网络可以助力智能电/网的更快发展。OpenDaylight是 SDN开源控制器框架,以协作方式,模型驱动架构,更易于 SDN的开放和创新。SDN 控制器框架 OpenDaylight技术作了深入研究。 【关键词】 SDN OpenDaylight 软件定义网络 一、引言 智能电网以集成高速双向通信网络为基础,利用多种高新技术和先进设备,能够真正实现电网的安全、高效、稳定、环保、经济性,是今后的发展趋势。智能电网需要自动化、信息化和互动化。这一切都需要更为智
2、慧的网络。SDN 软件定义网络可以助力智能电网的更快发展。OpenDaylight是 SDN开源控制器框架,以协作方式,模型驱动架构,更易于 SDN的开放和创新。本文对 SDN控制器框架 OpenDaylight技术作了深入研究。 二、OpenDaylight SDN 控制器 2.1 OpenDaylight 概述 OpenDaylight 屏蔽底层,网络服务于应用,打造统一开放的 SDN平台,目标是打造一个 SDN网络操作系统。 OpenDaylight 包含以下的核心技术。 OSGI:一种面向服务的架构,将应用视为对等模块的相互协作,支持在控制器运行时进行服务的安装、删除和更新。 MAVE
3、N:构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。 INFINISPAN:实现控制器的集群 SAL:整个架构引入了业务抽象层,将服务抽象化,使得上层北向和下层南向之间的调用相互隔离。 MD:Model Drive。使用 YANG工具,使用业务模型驱动来设计接口、实现业务功能,根据 YANG文件,YANG 工具直接生成业务管理的骨架,主要用于南北接口数据的适配,使开发者真正专注具体业务。 南向 API:Openflow 等。控制器通过南向 API管理底层。 北向 API:REST API,应用层通过北向 API管理控制器。 2.2 OSGI OSGI 模块化,
4、定义了 OSGI模块的概念,并将之称为一个 BUNDLE,包含一个元数据的 JAR文件,其中元数据 MANIFEST.MF,由 NAME_VALUE对组成,由类及相关资源组成,关注的是打包和共享代码。 生命周期定义了 OSGI在框架中如何动态安装和管理,通过生命周期的操作,安装、更新、卸载等,动态的管理和改进应用程序,不需要重启应用程序。重点在于执行时模块管理和对底层 OSGI框架的访问。 服务层面向服务,服务注册,查找等。接口与实现分离。OSGI 是JAVA接口,模块内的组件间交互和通信。 2.3 依赖管理 Bundle 的抽象基类,管理全局和容器相关的服务,bundle 本身就是一个大服务
5、。 Container 是 OpenDaylight中的一个网络域,有很多链接信息、整个域网络信息等,由 ContainerManager管理容器,而 OSGI管理各个bundle。 每个模块中有多个实现,其中通过 Dependency Manager管理其依赖关系。 每个实现一个 Component,每个 Component就是一个服务,里面说明了到处的接口和依赖的接口。 通过 Dependency Manager以 component管理依赖。 2.4 SAL SAL 主要作用将服务抽象出来,不管控制器和网络设备之间使用何种协议,提供协议的统一服务。SAL 是 ODL的核心设计,支持多种南
6、向协议,为各模块和应用提供一致的服务,这些服务的实现,是由底层插件,基于已存在的组件和网络设备的功能,所提供的接口。将具体请求,映射到相应的插件,完成服务。 SAL 提供的服务: Data Packet Services 为数据报文的处理,提供服务。 Topology Service 为应用提供节点和链路的更新信息。 Inventory service为如节点或者节点连接提供 API查询。Flow Programming Service是流编程服务。 Resource service 提供资源服务。 2.5 MD-SAL MD-SAL 的主要功能是促进提供者和使用者之间的管道。它可以提供提供者
7、和使用者之间的管道在不同的容器中。它将连接到一个消息总线和共享数据存储的集群 opendaylight容器。南向与北向的一致性。提供者或消费者在 MD-SAL中注册。从而,一个消费者可以找到所需的供应商。提供者可以生成通知,消费者可以接收通知,并从提供者获取数据。插件 SAL角色为消费者或生产者,它们定义的 SAL中的数据是被移走或存储数据。提供者可以将数据存入 SAL的,一个消费者可以从 SAL读取数据。MD-SAL 提供请求路由和基础设施服务,以支持服务。但它本身不提供服务,由插件提供服务。YANG 使得 Component之间、plugin、北向等API,使得这种接口和 AD-SAL R
8、EST接口相比更抽象,符合模型驱动的思想。 2.6 PACKET 处理流程 Openflow 报文首先到达 Controller,会将此报文发送对已经注册过监听 Openflow报文的类中进行处理。Packet In消息到来,经过底层plugin,经过 SAL层,调用实现了 IListenDataPacket的 receiveDataPacket处理。主要涉及三个模块,分别为ARPHandler,HostTracker,simpleForwarding。 ARPHandler 主要负责 arpRequest,arpReply。 HostTracker 负责主机信息,更新主机,以及连接情况。si
9、mpleForwarding处理 ip报文,同时安装到每个 host的流表。 2.7 Topology Service Controller 将报文送到 DiscoveryService。其实现了Idatapacketlisten,在 DataPacketmuxdemux中处理 Openflow报文的过程中,处理链路 processDiscoveryPacket报文,交给实现了idiscoverylistener的 Topologyserviceshim Implements Idiscoverylistener。 三、总结与展望 SDN 开启了一条网络创新的道路,将原来完全由交换机/路由器控制的报文转发过程转化为由 OpenFlow交换机和控制器 Controller来共同完成,从而实现了数据转发和路由控制的分离。控制器是 SDN的核心,可以通过事先规定好的接口操作来控制 OpenFlow交换机中的流表,从而达到智能控制数据转发的目的。使用 SDN技术打造智能电网前景广阔。 参 考 文 献 1 OpenDaylight User Guide, OpenDaylight, June, 2015. 2 https:/www.opendaylight.org, OpenDaylight.