SDN控制器OpenDaylight简介

时间:2024-04-06 21:05:46

发展历程

Open Daylight是一个高度可用、模块化、可扩展、支持多协议的控制器平台,可以作为SDN管理平面管理多厂商异构的SDN网络。它提供了一个模型驱动服务抽象层( MD-SAL),允许用户采用不同的南向协议在不同厂商的底层转发设备上部署网络应用。
2013年, Linux Foundation联合思科、 Juniper和 Broadcom等多家网络设备商创立了开源项目 Open Daylight,它的发起者和赞助商多为设备厂商而非运营商等网络设备消费者。 Open Daylight项目的发展目标在于推出一个通用的SDN控制平台、网络操作系统,从而管理不同的网络设备,正如 Linux和 Windows等操作系统可以在不同的底层设备上运行一样。 Open Daylight支持多种南向协议,包括 Open I.0和13版本NETCONF和 OVSDB等,是一个广义的SDN控制平台,而不是仅支持 Open Flow的狭义SDN控制器。
Open Daylight以元素周期表中的元素名称作为版本号,并每6个月更新一个版本。从第一个版本:氢( Hydrogen)发布至今,已经发布了5个版本,当前版本为硼( Boron)"”2014年2月4日, Open Daylight发布第一个版本 Hydrogen,得到了行业的聚焦,引起了一番轰动。第一版发布之后, Open Daylight发展迅速,很快就成为最具有潜力的SDN控制器。而相比之下,以Ryu和 Floodlight为代表的功能单一的SDN控制器的关注度大大降低, OpenDaylight成为当时SDN界最受人瞩目的开源控制器。

Open Daylight与其他控制器架构的明显差别是 Open Daylight架构中有服务抽象后SAL( Service Abstraction Layer)。SAL主要完成插件的管理,包括注册、注销和能力的抽象等功能。不过, Hydrogen版本不够成熟,代码中出现了两种实现方式:一种是已被弃用的 AD-SAL( Application- Driver SAL),另一种是目前正在使用的MD-SAL(Model-Driver SAL)。

2014年9月29日, OpenDaylight的Heim版发布。在11月和12月,官方还连续发布了 Helium版的两个子版本SR1和SRl. I. Open Daylight的 Helium版增加了与Open Stack的集成插件,还提供了一个体验更好的交互界面,性能也比 Hydrogen版本提升了许多。在此版本的实现中, Open Daylight抛弃了 AD-SAL,转而全面使用 MD-SAL此外,新版本还增加了NFV相关的模块。

2015年6月29日, Open Daylight的 ithium版发布。 Lithiun版增加了对 Open Stack的支持,并针对之前的安全漏洞,加强了安全方面的工作,可拓展性和性能也得到了提升。此外,该版本加大了对NFV方面的开发投入。相比 Helium版, Lithiun版的稳定性等得到了大大的提高,GU也得到了进一步美化,总体而言,相比 Helium版本增强了许多。

2016年2月, Open Daylight的 Beryllium版发布。新版本进一步提升了性能和可拓展性,也提供了更加丰富的应用案例。相比上一个版本,此版本没有太大的改变。

2016年9月, Open Daylight的新版本 Boron(硼)终于发布。 Boron版继续对性能进行提升,也在用户体验方面下了功夫。此外,该版本在云和NFV方面增加了若干新模块,进一步支持云和NFV。值得注意的是,这些新增的模块中,有大约一半是由Open Daylight的用户提出的,其中就有AT&T主导的 YANG IDE模块。从 Boron版开始Open Dayligh开始提倡由用户来引领创新,鼓励更多的社区用户参与到 Open Daylight中,一起推动 Open Daylight的发展。

Open Daylight是一个很庞大的开源项目,它的社区成员包括许多组织和企业,包括AT&T、思科和腾讯等。然而由于组织本身的利益不同,加入 Open Daylight项目的目的也各不相同。而出于企业战略考虑,社区中的赞助成员的策略各不相同,比如 Big Switch离开了项目, VMware减少了投资,但HP却增加了赞助,升级为 OpenDaylight社区的铂金会员。

架构与特性

Open Daylight的架构如图所示,可分为南向接口层、控制平面层、北向接口层和网络应用层。南向接口层中包含了如 Open Flow、 NET-CONF和SNMP等多种南向协议的实现。控制平面层是 Open Daylight的核心,包括 MD-SALI、基础的网络功能模块、网络服务和网络抽象等模块,其中 MD-SAL是 Open Daylight最具特色的设计,也是 Open Daylight架构中最重要的核心模块。无论是南向模块还是北向模块,或者其他模块,都需要在 MD-SAL中注册才能正常工作。 MD-SAL也是逻辑上的信息容器,是OpenDaylight控制器的管理中心,负责数据存储、请求路由、消息的订阅和发布等内容北向接口层包含了开放的 REST API接口及AAA认证部分。应用层是基于 Open Daylight北向接口层的接口所开发出的应用集合。
SDN控制器OpenDaylight简介

OpenDaylight基于Java语言编写,采用 Maven( Maven是一个优秀的跨平台构建工具,是 Apache的一个项目)来构建模块项目代码。 Maven构建工程有许多好处,可以允许 Open Daylight对某些模块进行单独编译,使得在只修改某些模块代码时快速完成编译。为了实现 Open Daylight良好的拓展性, Open Daylight基于OsGi( Open ServiceGateway Initiative)框架运行,所有的模块均作为oSGi框架的 bundle运行。OSGi是一个Java框架,其中定义了应用程序即 bundle的生命周期模式和服务注册等规范。OsGi的优点是支持模块动态加载、卸载、启动和停止等行为,尤其适合需要热插拔的模块化大型项目。 Open Daylight作为一个网络操作系统平台,基于OSGi框架开发可以实现灵活的模块加载和卸载等操作,而无须在对模块进行操作时重启整个控制器,在新版本中,其使用了Kaf容器来运行项目。Kaaf是 Apache旗下的一个开源项目,是一个基于osGi的运行环境,提供了一个轻量级的oSGi容器。基于 Open Daylight控制器开发模块时,还需要使用YANG语言来建模,然后使用 YANG Tools生成对应的 Java API,并与其他 Maven构建的插件代码共同完成服务实现。

特性方面, Open Daylight支持丰富的特性,而且在目前版本迭代中依然不断增加特性。南向协议支持方面, Open Daylight支持 Open Flow、 NET-CONF、SNMP和PCEP等多种南向协议,所以 Open Daylight可以管理使用不同南向协议的网络。核心功能部分,Open Daylight除了支持如拓扑发现等基础的控制器的功能以外,还支持许多新的服务,San VTN(Virtual Tenant Network ) ALTO(Application Layer Traffic Optimization ), DDoS防御及 SDNi Wrapper等服务和应用。值得一提的,SDNi是华为开发并提交给IETF的SDN域间通信的协议草案,目的是实现SDN控制器实例之间的信息交互。

此外, Open Daylight还正在大力开展NFV的研发。正如之前提到的, Open Daylight不仅仅是一个SDN控制器, Open Daylight是一个网络操作系统。除了SDN控制器的基础功能以外,还包括NFV等其他应用服务,可见其旨在打造一个通用的SDN操作系统。

Open Daylight若干模块介绍,如表所示
SDN控制器OpenDaylight简介
SDN控制器OpenDaylight简介
上述表中列出的模块是Open Daylight众多模块的一部分,发展至今,Open Daylight的模块数目已经很多,支持的特性也很丰富,它的规模是其他控制器无法相提并论的。

*内容摘自《重构网络-SDN架构与实现》