OpenDaylight架构分析
Posted Hi,云计算!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenDaylight架构分析相关的知识,希望对你有一定的参考价值。
基本介绍
OpenDaylight(ODL) 是一个基于SDN开发的模块化、可扩展、可升级、支持多协议的控制器框架。北向接口可扩展性强,REST型API用于松耦合应用,OSGI型用于紧耦合应用。引入SAL屏蔽不同协议的差异性。南向支持多种协议插件,如OpenFlow 1.0、 OpenFlow 1.3、OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等。底层支持传统交换机、纯Openflow交换机、混合模式的交换机。ODL控制平台采用了OSGI框架,实现了模块化和可扩展化,为OSGI模块和服务提供了版本和周期管理。ODL靠社区的力量驱动发,支持工业级最广的SDN和NFV使用用例。ODL每6个月推出一个版本,经历的版本为Hydrogen、Helium、Lithium、Beryllium。
OpenDaylight 设计时候遵循六个基本架构原则:
- Runtime Modularity and Extensibility:支持控制器运行时进行服务模块的安装、删除和更新。
- Multiprotocol Southbound:南向支持多种协议。
- Service Abstraction Layer:南向多种协议对上提供统一的北向服务接口,MD-SAL(Model Driven Service Abstraction Layer)是opendaylight 的一个主要feature。
- Open Extensible Northbound API:提供可扩展的应用API,通过REST或者函数调用方式。
- Support for Multitenancy/Slicing:允许网络逻辑上(或物理上)划分成不同的切片或租户,控制器的部分功能和模块可以管理指定切片,控制器根据所管理的分片来呈现不同的控制观测面。
- Consistent Clustering:提供细粒度复制的聚合和确保网络一致性的横向扩展(scale-out)。
架构分析
ODL控制器可以运行在任何支持JAVA的平台上,如架构图1所示,大体分为三部分,网络APP/业务流程层、控制器平台层、物理/虚拟网络设备层,北向接口与南向接口将三者连接。控制器向应用层提供北向接口,应用使用控制器收集信息,利用控制器做分析,部署新的网络规则等。南向接口可支持多种协议,openflow1.0、openflow1.3、BGP等,这些协议插件动态地连接在SAL上。
OpenDaylight(Beryllium)架构 图-1
物理和虚拟网络设备层
最底层由物理、虚拟设备组成。例如交换机、路由器等在网络端点间建立连接。底层支持传统交换机、纯Openflow交换机、混合模式的交换机。
南向接口和协议模块
南向接口
ODL向下层提供的接口称之为南向接口,南向接口支持多种协议。如OpenFlow 1.0、 OpenFlow 1.3,OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等。这些协议模块以插件的方式动态挂在SAL上。南向接口使用Netty来管理底层的并发IO。Netty是提供异步的、事件驱动的网络应用框架,该框架健壮性、可扩展性良好,还具有延时低、节省资源等特点。Netty使用简单,功能强大,支持多种主流协议。定制性强,可以通过channelHandler对通信框架进行灵活扩展,适用于支持多种协议的南向接口。
协议模块
协议模块主要有OpenFlow、OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等协议模块。其中OF最具代表性,OF是控制器与交换机之间的通信准则,管理网络设备会话连接以及协议交互,一方面监听底层设备的消息,另一方面将上层请求下发到底层设备,此外还支持链路发现服务。
为了用以太网交换机建SDN,提出一个南向接口插件。如图2所示,可通过这个插件中的SNMP和CLI把流配置安装到以太网交换机的转发表、ACL 和VLAN表中,此外需要拓展SAL的API去支持一些设置。
SNMP协议插件-图-2
OVSDB插件用于实现open VSwitch数据库管理协议,允许南向接口配置虚拟交换机。而LISP插件与LISP服务相互协作,为数据平台设备提供映射服务。BGP协议用于支持BGP链路状态分布,作为网络层拓扑信息来源。而PCEP协议用于支持路径计算单元协议,为底层网络实例化路径。
功能模块
基本网络服务功能:
拓扑管理、统计管理模块、交换机管理模块、转发管理模块、主机追踪模块、ARPHandler模块
拓展服务功能(基础版之后添加):
Affinity service、OpenStack service、LISP service、OVSDB Neutron、VTN Manager、oDMC
OpenDaylight有很多重要的技术需要了解,每种技术都需要花一段时间研究,例如OSGI框架的使用,OSGI服务的注册和调度,maven工程中bundle的编写方法,sal,YANG,config等,
packet分发流程
为加深对ODL架构理解,以ARP packet为例来分析packet分发流程。如图-3 所示,OSGI 框架动态管理Bundle,绑定一起的Bundle可以相互通信,如SAL将packet 分发到实现IListenDataPacket接口的ArpHandler,同时ArpHandler调用SAL实现的IDataPacketService。
图-3
如图-4所示,交换机(openflow)通过OpenFlowJava、OpenFlowPlugin、protocal_plugin与SAL进行信息,SAL将Packet-In分发到上层应用。
图-4
如图-5所示,1.OpenFlowPlugin调用IPluginOutDataPacketService将ARP请求分发到SAL
2.SAL调用IListenDataPacket将ARP请求上层应用
3.上层应用调用IDataPacketService将ARP应答分发到SAL
4.SAL调用IPluginInDataPacketService将ARP应答分发到OpenFlowPlugin
图-5
控制器集群
ODL提供集群功能保证服务的高可用,集群中的多个实例对外表现出一个实例,NorthBound可以请求集群中任意一个实例。
集群的作用:
? Scaling: If you have multiple controllers running, you can potentially do more work with or store more data on those controllers if they are clustered. You can also break up your data into smaller chunks (known as shards) and either distribute that data across the cluster or perform certain operations on certain members of the cluster.
? High Availability: If you have multiple controllers running and one of them crashes, you would still have the other instances working and available.
? Data Persistence: You will not lose any data gathered by your controller after a manual restart or a crash.
集群使用的核心技术:
Infinispan(High Avaliable,Key/Value NoSQL datastore)提供高可用缓存服务
Raft算法保证多副本数据的一致性
Akka处理并发的请求
集群中数据如下图所示,
图-6
图-7
图-8
参考文档:
http://www.sdnlab.com/15390.html
https://wiki.opendaylight.org/images/8/88/ODL-Clustering-ONS-2016-ckd.pdf
集成OpenStack
ODL通过北向接口Neutron Bound与Neutron Server通信,ODL利用OpenFlow和OVSDB 管理OpenStack计算节点的OpenVSwitch(组织table内的flow entry),提供L2、L3、LoadBalanceService、FirewallService。
注:Kilo -> 开始支持L3 Liberty 依然不支持LoadBalance 等其它服务
组织逻辑 图-9
ODL与OpenStack集成 图-10
图-11
图-12
参考文档:
http://www.flaviof.com/blog/work/how-to-odl-with-openstack-part1.html
https://wiki.opendaylight.org/images/5/55/Integrating-opendaylight-with-openstack-published.pdf
应用案例
企业认识到云计算技术是提高自己的竞争力的核心技术,混合云和公有云提高业务灵活性并降低总成本的潜力,但对传统网络的需求依旧非常显著。通信服务提供商(CSP)利用云技术来增强其庞大的网络基础设施的可管理性和成本效益,同时提高服务灵活性。SDN体系结构的核心是SDN控制器,其主要优点为:开放API便于实现多样化的应用;支持各大厂商的不同设备;通过可编程网络提供了智能的控制和管理系统。
随着网络设备线性速率成倍增长,网络越来越低效,网络优化需求越来越急迫。由于带宽和网络延迟优先级很高,运营商和他们的用户都在寻求方法优化网络开销、网络弹性和其他跨异构网络技术和设备的QoS指标。网络优化对于昂贵的网络带宽,例如WAN(对于企业和云提供商)、海缆网络和传输网(对于运营商),是最重要的。没有运营商可以奢侈到推翻一切从头再来,网络资源优化方案利用创新方案从现有的基础设施上实施。
网络资源优化方案应该提供:
- 具有优化一系列参数的能力(带宽,延迟,开销和可用性等)
- 具有执行一系列优化算法的能力
- 健壮的拓扑和网络状态,包括多层次拓扑(对于运营商网络而言)
- 支持多种技术和应用
- 策略加强
- 具有操作多厂商设备的能力,包括不支持SDN(non-SDN-enabled)的硬件
选择OpenDaylight
通过统一维护网络拓扑和配置连同告警和性能状态,OpenDaylight为网络资源优化(NRO)提供了一套丰富的基础网络服务和扩展网络服务。利用OpenDaylight的逻辑集中网络状态、数据分析和异构基础设施的流量工程策略的NRO算法,提高网络设备的利用率。运营商正在实现基于OpenDaylight融合分组光网络的多层控制,来优化带宽使用、保护带宽和动态服务环境的服务布局。
OpenDaylight提供的一个开放式SDN平台:
- 模型驱动服务抽象层(MD-SAL)利用业界标准的YANG模型将网络应用映射到底层设备支持的格式。
- 模块化、插件南向接口方法(例如,控制器到设备)广泛支持标准的网络管理接口(例如BGP,PCEP),OpenFlow以及专用的接口和设备。
- 基于Intent的北向(例如,网络应用到控制器)接口将SDN能力暴露给不同的网络应用同时将底层基础设备的细节抽象化。
- 提供的服务,包括路径计算、资源管理、针对虚拟域和物理域的数据分析。
- 多种内置的策略规范。
- 业界广泛认可,包括最大的控制器社区。
通过允许运营商组合网络应用和设备,OpenDaylight提供了一个强有力的支持自动化和操作智能化的服务交付平台,也支持运营商根据自身情况进行SDN迁移。
示例
腾讯基于OpenDaylight的控制器,用以优化带宽使用从而解决其在大量的数据中心间传输服务的问题。
中国移动NovoNet,NovoNet描绘了2020年基于SDN和NFV的企业网络的愿景,其中一个重要用例就是围绕“自配置、自管理、智能流量规划和实时感知”实现的流量优化。
图-13
多层次传输控制器解决方案 SDN在电信行业一个重要的用例就是Transport-SDN,专注于解决城域网和长距离连接的光分组设施的控制问题。很多主流的原始设备制造商已经基于OpenDaylight开发出了Transport SDN控制器,用来控制多层次设备。爱立信的Transport SDN产品提供了一个网络资源和拓扑端到端、优化的资源位置以及跨IP层和光层的网络引擎的抽象视图。
图-14
以上是关于OpenDaylight架构分析的主要内容,如果未能解决你的问题,请参考以下文章