OpenDaylight(ODL)是Linux基金会负责管理的开源项目,是一款使用JAVA开发的控制器,提供一套基于SDN开发的模块化、可扩展、可升级、支持多协议的控制器框架,目的是推动SDN技术的创新实施和透明化。

SDN

SDN(Software Defined Network)即软件定义网络,是一种网络设计理念,或者一种推倒重来的设计思想。DN的理念是将原来封闭在通用网络硬件的控制平面抽取、独立出来并软件化为SDN控制器,这个控制器如同网络的“大脑”控制网络中的所有设备,而原来的通用网络硬件只需要听从SDN控制器的命令进行“傻瓜式”转发就可以了。其简单模型如图所示:

SDN网络的三大技术特征:

  • 控制平面和数据平面分离

  • 逻辑上的集中控制

  • 网络开放可编程

项目架构

ODL控制器项目架构大致如下:

ODL控制器设计原则

ODL在设计的时候遵循了六个基本的架构原则(以下来自opendaylight官方文档):

1、运行时模块化和扩展化(Runtime Modularity and Extensibility):支持在控制器运行时进行服务的安装、删除和更新。

2、多协议的南向支持(Multiprotocol Southbound):南向支持多种协议。

3、服务抽象层(Service Abstraction Layer):南向多种协议对上提供统一的北向服务接口。Hydrogen中全线采用AD-SAL,Helium版本AD-SAL和MD-SAL共存,Lithium和Beryllium中已基本使用MD-SAL架构。

4、开放的可扩展北向API(Open Extensible Northbound API):提供可扩展的应用API,通过REST或者函数调用方式。两者提供的功能要一致。

5、支持多租户、切片(Support for Multitenancy/Slicing):允许网络在逻辑上(或物理上)划分成不同的切片或租户。控制器的部分功能和模块可以管理指定切片。控制器根据所管理的分片来呈现不同的控制观测面。

6、一致性聚合(Consistent Clustering):提供细粒度复制的聚合和确保网络一致性的横向扩展(scale-out)。

ODL架构特点

  • 南向接口支持OpenFlow、Netconf、SNMP、PCEP等标准协议,同时支持私有化接口;

  • 业务抽象层(SAL)保证上下层模块之间调用可以相互隔离,屏蔽南向协议差异,为上层功能模块提供一致性服务;

  • 采用OSGI体系结构,解决组件之间的隔离问题;

  • 使用YANG工具直接生成业务管理的“骨架”;

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

ODL控制器使用了哪些核心技术:

1、OSGi框架

OSGi(Open Service Gateway Initiative,直译为“开放服务网关”),是一个以Java为技术平台的动态模块化规范。OSGi中规定如何定义一个模块以及模块之间如何交互,Java模块被称为Bundle,OSGi就是为了使Bundle能更好的被复用。基于OSGi的应用是由一个个Bundle组成的,这些Bundle通过OSGi组织在一起,形成了一个系统。

OSGI框架分层:

  • 安全层

  • 模块层

  • 生命周期层

  • 服务层

2、Bundle

OSGi如果说是Java的模块开发体系,Bundle就是模块。OSGi中每个Bundle都有自己的类加载器,支持包级别的类导入和类导出,Bundle通过配置MANIFEST.MF,可以控制从Bundle导出的包,而没有导出的包则在Bundle外部是无法访问的。这样就完成了内部包和外部包的隔离。

3、KARAF是Apache旗下的开源项目,同时也是一个基于OSGI的运行环境,可以用于部署各种组件和应用程序。

4、Maven是现在Java社区中最强大的项目管理和项目构建工具。

5、Netty:java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。OpenDaylight南向使用Netty来管理底层的并发IO。

6、Jersey:开源的RESTful框架,实现了JAX-RS (JSR 311 & JSR 339) 规范。OpenDaylight北向使用Jersey提供REST接口。

还有其他很多用到的技术就不一一介绍了,有兴趣的朋友可以去网上搜索一下。

举报/反馈

程序猿小董

3733获赞 672粉丝
软件工程师的日常生活
科技领域创作者
关注
0
0
收藏
分享