基本介绍
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服务相互协作,为数据平台设备提