打开日光细节

OpenDaylight(ODL)是一个由Linux基金会管理的开源项目。它是用JAVA开发的控制器。它提供了基于SDN开发的模块化、可扩展、可伸缩、多协议的控制器框架,旨在促进SDN技术的创新实现和透明性。

SDN(软件定义网络)是一种网络设计思想或者说是一种再发明的设计思想。DN的概念是将原来封装在通用网络硬件中的控制平面提取分离出来,变成一个SDN控制器。这个控制器就像是网络的“大脑”来控制网络中的所有设备,而原来通用的网络硬件只需要听SDN控制器的命令就可以“忽悠”前进。其简单模型如图所示:

SDN网络的三大技术特征:

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

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

1.运行时模块化和可扩展性:支持控制器运行时服务的安装、删除和更新。

2.多协议南行:南行支持多种协议。

3.服务抽象层:为南向的多种协议提供统一的北向服务接口。氢全线采用AD-SAL,氦版本AD-SAL和MD-SAL并存,MD-SAL的架构已经基本用在锂和铍上。

4.开放可扩展北向API:通过REST或函数调用提供一个可扩展的应用API。两者提供的功能应该是一致的。

5.支持多租户/切片:允许网络在逻辑上(或物理上)划分为不同的切片或租户。控制器的一些功能和模块可以管理指定的片。控制器根据被管理的切片呈现不同的控制观察表面。

6.一致的集群:提供细粒度的复制聚合和横向扩展,以确保网络一致性。

1,OSGi框架

OSGi是一个基于Java的动态模块化规范。OSGi规定了如何定义一个模块以及模块之间如何交互。Java模块被称为bundle,OSGi是为了让bundle更好的重用。基于OSGi的应用程序由Bundle组成,Bundle通过OSGi组织在一起形成一个系统。

OSGI框架分层:

2、捆绑

如果说OSGi是Java的一个模块开发系统,Bundle就是一个模块。OSGi的每个包都有自己的类装入器,它支持包级别的类导入和类导出。通过配置清单。MF,Bundle可以控制从Bundle导出的包,而没有导出的包在Bundle之外是无法访问的。这完成了内部封装和外部封装的隔离。

3.KARAF是Apache下的开源项目,也是基于OSGI的操作环境,可以用来部署各种组件和应用。

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

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

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

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