Opendaylight 学习文档
qq 群#北邮-天依
目录
1. 概述 .................................................................................................................... 3
1.1 Opendaylight 简介....................................................................................................................3
1.2 本文档组织结构 ......................................................................................................................7
2. 感受 Opendaylight............................................................................................... 7
2.1 环境搭建 .................................................................................................................................7
2.2 获取代码 ..................................................................................................................................9
2.3 安装 mininet...........................................................................................................................11
2.4 controller 使用及功能介绍.................................................................................................11
2.5 Openflowplugin 功能及使用方法..........................................................................................14
2.6 Hydrogen..............................................................................................................................16
3 Maven 和 OSGI 基础 ......................................................................................16
3.1 Maven ..................................................................................................................................16
3.2 OSGI .....................................................................................................................................20
4 使用 IDE.........................................................................................................30
4.1 使用 Eclipse ........................................................................................................ 31
4.1.1 导入 controller 项目...........................................................................................................31
4.2 使用 Intellij idea.................................................................................................. 38
5 Controller 代码分析 .....................................................................................39
5.1 代码目录 .............................................................................................................................40
5.2 收发包过程简介( packet service) ...................................................................................41
6 Opendaylight 重要技术及文档 ......................................................................44
1. 概述
1.1 Opendaylight 简介Opendaylight( Opendaylight 官网)是 Linux 基金会的一个合作项目。 目前,
包括十二个项目,每一个项目都有自己的代码库(Opendaylight 项目列表)。这些
项目中与 openflow 相关的项目的有 controller、 openflowjava 和 openflowplugin,
目前, controller 仅支持 openflow 1.0, openflowplugin 是一个单独的项目,将来
它的 core 部分要集成到 controller 中,使 controller 支持 openflow 1.3 及以上的版
本。 Opendaylight 的厂商成员分为铂金成员,金牌成员和银牌成员。
图 1 Opendaylight 阵营Opendaylight controller 使用 java 编写,运行在 JVM 上,理论上来说可以部
署到任何支持 JAVA 的平台上,但是其官网文档推荐的最佳运行环境为最新的Linux( Ubuntu 12.04+)及 JVM 1.7+。 OpenDaylight Controller 提供了一个模块化
的开放 SDN 控制器,它提供了开放的北向 API(开放给应用的接口),同时南
向支持多种包括 openflow 在内的多种 SDN 协议。底层支持混合模式的交换机和
经典的 Openflow 交换机。Open Daylight Controller 在设计的时候遵循了六个基本的架构原则(以下来
自 opendaylight 官方文档):
运行时模块化和扩展化( Runtime Modularity and Extensibility):支持在控
制器运行时进行服务的安装、删除和更新。
多协议的南向支持( Multiprotocol Southbound):南向支持多种协议。
服务抽象层( Service Abstraction Layer):南向多种协议对上提供统一的北
向服务接口。 MD-SAL( Model Driven Service Abstraction Layer)是opendaylight 的一个主要 feature。
开放的可扩展北向 API( Open Extensible Northbound API):提供可扩展的
应用 API,通过 REST 或者函数调用方式。两者提供的功能要一致。
支持多租户、切片( Support for Multitenancy/Slicing):允许网络在逻辑上
(或物理上)划分成不同的切片或租户。控制器的部分功能和模块可以管
理指定切片。控制器根据所管理的分片来呈现不同的控制观测面。
一致性聚合( Consistent Clustering):提供细粒度复制的聚合和确保网络
一致性的横向扩展( scale-out)。Opendaylight controller 的架构框架:
图 2 Opendaylight controller 架构
如图 2 所示,南向通过 plugin 的方式来支持多种协议,包括 OpenFlow1.0、1.3, BGP-LS 等。这些模块被动态挂载到服务抽象层( SAL), SAL 为上层提供
服务,将来自上层的调用封装为适合底层网络设备的协议格式。控制器需要获取
底层设备功能、可达性等方面的信息,这些信息被存放在拓扑管理器( TopologyManager)中。其他的组件,包括 ARP handler、 Host Tracker、 Device Manager
和 Switch Manager,则为 Topology Manager 生成拓扑数据。
控制器为应用( App)提供开放的北向 API。支持 OSGI 框架和双向的 REST
接口。 OSGI
qq 群#北邮-天依
目录
1. 概述 .................................................................................................................... 3
1.1 Opendaylight 简介....................................................................................................................3
1.2 本文档组织结构 ......................................................................................................................7
2. 感受 Opendaylight............................................................................................... 7
2.1 环境搭建 .................................................................................................................................7
2.2 获取代码 ..................................................................................................................................9
2.3 安装 mininet...........................................................................................................................11
2.4 controller 使用及功能介绍.................................................................................................11
2.5 Openflowplugin 功能及使用方法..........................................................................................14
2.6 Hydrogen..............................................................................................................................16
3 Maven 和 OSGI 基础 ......................................................................................16
3.1 Maven ..................................................................................................................................16
3.2 OSGI .....................................................................................................................................20
4 使用 IDE.........................................................................................................30
4.1 使用 Eclipse ........................................................................................................ 31
4.1.1 导入 controller 项目...........................................................................................................31
4.2 使用 Intellij idea.................................................................................................. 38
5 Controller 代码分析 .....................................................................................39
5.1 代码目录 .............................................................................................................................40
5.2 收发包过程简介( packet service) ...................................................................................41
6 Opendaylight 重要技术及文档 ......................................................................44
1. 概述
1.1 Opendaylight 简介Opendaylight( Opendaylight 官网)是 Linux 基金会的一个合作项目。 目前,
包括十二个项目,每一个项目都有自己的代码库(Opendaylight 项目列表)。这些
项目中与 openflow 相关的项目的有 controller、 openflowjava 和 openflowplugin,
目前, controller 仅支持 openflow 1.0, openflowplugin 是一个单独的项目,将来
它的 core 部分要集成到 controller 中,使 controller 支持 openflow 1.3 及以上的版
本。 Opendaylight 的厂商成员分为铂金成员,金牌成员和银牌成员。
图 1 Opendaylight 阵营Opendaylight controller 使用 java 编写,运行在 JVM 上,理论上来说可以部
署到任何支持 JAVA 的平台上,但是其官网文档推荐的最佳运行环境为最新的Linux( Ubuntu 12.04+)及 JVM 1.7+。 OpenDaylight Controller 提供了一个模块化
的开放 SDN 控制器,它提供了开放的北向 API(开放给应用的接口),同时南
向支持多种包括 openflow 在内的多种 SDN 协议。底层支持混合模式的交换机和
经典的 Openflow 交换机。Open Daylight Controller 在设计的时候遵循了六个基本的架构原则(以下来
自 opendaylight 官方文档):
运行时模块化和扩展化( Runtime Modularity and Extensibility):支持在控
制器运行时进行服务的安装、删除和更新。
多协议的南向支持( Multiprotocol Southbound):南向支持多种协议。
服务抽象层( Service Abstraction Layer):南向多种协议对上提供统一的北
向服务接口。 MD-SAL( Model Driven Service Abstraction Layer)是opendaylight 的一个主要 feature。
开放的可扩展北向 API( Open Extensible Northbound API):提供可扩展的
应用 API,通过 REST 或者函数调用方式。两者提供的功能要一致。
支持多租户、切片( Support for Multitenancy/Slicing):允许网络在逻辑上
(或物理上)划分成不同的切片或租户。控制器的部分功能和模块可以管
理指定切片。控制器根据所管理的分片来呈现不同的控制观测面。
一致性聚合( Consistent Clustering):提供细粒度复制的聚合和确保网络
一致性的横向扩展( scale-out)。Opendaylight controller 的架构框架:
图 2 Opendaylight controller 架构
如图 2 所示,南向通过 plugin 的方式来支持多种协议,包括 OpenFlow1.0、1.3, BGP-LS 等。这些模块被动态挂载到服务抽象层( SAL), SAL 为上层提供
服务,将来自上层的调用封装为适合底层网络设备的协议格式。控制器需要获取
底层设备功能、可达性等方面的信息,这些信息被存放在拓扑管理器( TopologyManager)中。其他的组件,包括 ARP handler、 Host Tracker、 Device Manager
和 Switch Manager,则为 Topology Manager 生成拓扑数据。
控制器为应用( App)提供开放的北向 API。支持 OSGI 框架和双向的 REST
接口。 OSGI