前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenDaylight系列文章(三):OpenDaylight初窥(中篇)之OpenDaylight的系统架构

OpenDaylight系列文章(三):OpenDaylight初窥(中篇)之OpenDaylight的系统架构

作者头像
SDNLAB
发布2018-03-28 15:47:58
1.6K0
发布2018-03-28 15:47:58
举报
文章被收录于专栏:SDNLABSDNLABSDNLAB

如果说前面的文章是铺垫的“地毯”,那么从本篇开始OpenDaylight就算是正式踩着地毯走来了。在本篇文章中将会给大家简要介绍一下OpenDaylight的系统架构及工程。

OpenDaylight的系统架构

一、“做人的原则”

OpenDaylight(ODL) 在架构设计的时候遵循了六个基本的原则:

1、做一个可随时变身的“变形金刚”:Runtime Modularity and Extensibility

2、南向协议多样化:Multiprotocol Southbound

3、服务抽象层:Service Abstraction Layer

4、北向应用API“收缩自如”:Open Extensible Northbound API

5、多租户、多切片:Support for Multitenancy/Slicing

6、良好的“克隆”能力:Consistent Clustering

二、“做人的样子”

以Carbon版本为示例,ODL控制器系统整体架构如下图所示:(图片来自官网)

从架构图我们可以看到,控制器主要由以下部分组成:

1、开放的北向API:包括REST/RESTCONF/NETCONF/AMQP

2、控制器平面:包括ODL root Parent、Controller等几十个工程

3、南向接口和协议插件:包括OpenFlow、NETCONF等

OpenDaylight的工程

OpenDaylight是由几十个有着“裙带关系”的工程组成,就像一个庞大的家族。下图为ODL的“全家福”,列出了Carbon版本众多工程及相互之间的依赖关系(图片来自官网):

因ODL家族比较庞大,限于篇幅,在这里只给大家简要介绍下图的几个工程,这些工程在在后续篇章中会主要涉及:

一、ODLParent

【家族角色】 Kernal project,ODL家族的“族长”

【性格特点】威严、老是爱制定“家法”

【家族职责】为参与版本发布的项目提供统一的项目配置,其他项目只需遵从继承odlparent即可获得ODL统一设置,是opendaylight中所有项目的Maven配置基础。

【人际关系】德高望重、受人爱戴

二、YANG Tools

【家族角色】Kernal project,ODL家族的“智多星”

【性格特点】总是爱发明创造各种工具

【家族职责】基础设施项目,旨在开发必须的工具和库,为Java项目和应用提供NETCONF和YANG支持。

【人际关系】爱戴ODL Parent(项目依赖于ODLParent)

三、MD-SAL

【家族角色】Kernal project,ODL家族的“外交部长”,制定家族外事的标准规范。

【性格特点】说话做事总有一些标准的套路

【家族职责】提供Request Routing和基础设施用来定义抽象服务和相应API的基础框架,管理基于Yang 模型定义的各种Plugin。MD-SAL使得SDN控制器那些丰富的服务和模块可以使用统一的数据结构和南向、北向的API。

【人际关系】尊敬ODLParent,和YANG Tools关系很好(项目依赖于ODLParent、YANG Tools)

四、Controller

【家族角色】Kernal project,ODL家族的“核心人物”。odlparent年纪大了,族内很多事情离不开controller来处理。

【性格特点】能力卓越、颇有人缘、四通八达

【家族职责】为多厂家网络的SDN部署提供一个高可用、模块化、可扩展并可支持多协议的控制器基础框架。在该项目中模型驱动的业务抽象层使控制器支持多个南向协议插件;面向应用的可扩展北向架构为控制器提供丰富的北向API。

【人际关系】尊敬odlparent,和YANG Tools、MD-SAL来往密切。( Controller项目依赖于ODLParent、YANG Tools、MD-SAL。)

五、AAA

【家族角色】Kernal project,ODL家族护卫,负责家族的安保系统。

【性格特点】忠诚可靠

【家族职责】为用户开发身份认证、授权和计费功能,包括为用户提供适用于多种身份认证、授权、计费机制的通用模型,提供可插拔的机制并为通用系统提供插件。

【人际关系】对Kernal project们忠心耿耿(项目依赖于其他kernal project)

六、OpenFlow

【家族角色】Protocol Project,ODL家族外事办的重要成员之一,负责处理“OpenFlow”事务。

【性格特点】机灵、有活力

【家族职责】为OpenDaylight提供OpenFlow协议支持,实现控制器与OpenFlow交换机之间的交互。OpenFlow在OpenDaylight中的实现分为OpenFlowJava和OpenFlowPlugin两部分:OpenFlowJava,负责面向南向设备完成OpenFlow协议的序列化、反序列化、端口监听以及消息收发;OpenFlowPlugin,负责完成OpenFlow协议的状态管理、会话管理、事件处理等,向SAL层提供服务。

【人际关系】紧密团结在核心大佬周围(项目主要依赖于很多kernal project)

七、L2Switch

【家族角色】Uncategorized Projects,ODL家族外事办的成员之一,负责处理“L2”事务。

【性格特点】学习能力强、主动性高

【家族职责】将传统L2Switch设备的控制层抽离到控制器上,使控制器具备L2Switch的处理能力,负责MAC地址学习、数据转发决策等。它是具备L2Switch控制能力的应用插件,通过向软交换机下发流表,从而控制数据包的转发行为。

【人际关系】关系复杂,不信的话请看上文项目依赖图。

八、DLUX

【家族角色】App Project,ODL家族的新闻发言人

【性格特点】实用(长相不敢恭维,但是表达清晰、简洁)

【家族职责】为控制器的使用者提供交互式Web UI应用,通过图形化的用户界面提供用户体验。

【人际关系】不说了,参照L2Switch

本文简单地对ODL的系统架构及工程进行了一些介绍,纯属抛砖引玉,详细内容大家可以参照官网进行了解。下篇将会给大家介绍一些常用feature的安装及使用,敬请期待。谢谢!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档