前言 |
OpenDaylight(简称ODL)项目是Linux基金会旗下的一个开源合作项目,致力于推进软件定义网络和网络功能虚拟化的发展,寻求一个更透明化的方式以促进该领域的创新。该组织由行业领先者建立,旨在制定一个统一、开放的平台,驾驭合作开发的力量,以驱动产业和生态圈的创新。ODL是针对公司,服务提供商,数据中心,WAN的模块化开放的SDN平台,其基于OSGi的微服务架构让用户能够按需部署网络服务、应用、协议和插件。ODL平台基本每半年发布一次大的版本,从2013年开始,项目经历了多个版本的迭代已逐渐趋于成熟和稳定,几乎成为了网络创新应用场景的默认选择。
ODL把被控制的网络看作是一个消息驱动的巨大的状态机,因此该平台核心架构即其模型驱动的状态保存机制与消息转发机制,称为模型驱动的业务抽象层(MD-SAL)。该架构的魅力源于其架构的前瞻性、可塑性和长期演进能力。
正因为ODL在架构设计上的先进性和灵活性,因此ODL成为了SDN领域最有影响力的开源平台。其灵活的插件机制与在规模上弹性扩展,使ODL可应用于智慧城市和其他IoT应用等涉及多种设备类型以及多种网络技术的场景,包括光交换,IP
/
MPLS、LTE或5G无线网络,ODL对这些技术的可编程性可以做到设备无关。如今,ODL在各场景的网络创新中的应用越来越广泛,利用和贡献ODL项目的中国公司数量也在不断增长,包括华为、联想、瑞斯康达、腾讯、Zenlayer、糖心logo官网,阿里巴巴和百度等,其中,2017年3月份,糖心logo官网首页成为国内首家ODL白金会员。
|
为什么写这本书 |
ODL不仅仅是一个SDN控制器平台,它还是一个优秀的模型驱动架构的实现,一个典型的分布式系统的设计范例。通过ODL,我们能学习的不仅仅是SDN,其通用的编程技术及软件架构设计也非常值得我们学习,还有其分布式系统设计实现也值得我们借鉴。
但是,ODL作为一个开源项目,也有令人诟病的地方,主要有两点:一是虽然ODL架构设计比较先进,代码实现也比较优秀,但ODL系统性的文档比较缺乏,而且仅有的一些文档还更新滞后,内容陈旧,容易误导新手,再加上语言和文化背景的差异,这足以让大量国内ODL?初级玩家望而却步;二是ODL的架构演进非常快,核心模块和接口频繁变动,再加上ODL子项目众多,导致ODL功能和接口碎片化严重,开发者一开始面对几百万行代码,确实有点老虎吃天,无从下口的感觉。
我作为一个一直从事软件研发工作的工程师,深知学习与应用ODL的不易,如何才能够帮助到大家呢?我想是不是可以把我之前学习ODL的笔记,对ODL源码的分析,对ODL架构设计的理解整理成篇,帮助大家深入理解ODL设计原理和思想,把握其核心源码实现,以不变应万变。这无疑对于大家基于ODL这个平台进行业务研发及使用ODL都能有所裨益。
|
本书的读者对象 |
本书适合所有有志于解决现有网络问题并促进网络变革的通信、网络及计算机行业相关从业者,特别是希望掌握软件定义网络热门技术的开发人员;具有一定工作经验,关注网络热门技术并希望查漏补缺继续成长的程序员;以及具备一定软件开发能力的网络技术领域从业者。
具备一定的Java语言开发基础,了解网络基础知识及分布式系统基础知识将有助于更好的理解本书中的内容。 |
本书的主要内容 |
对于广大有志于投身网络变革大潮的从业者而言,ODL依然具有很高的门槛,100多个子项目,几百万行源代码,OSGi、Maven、Akka、YANG等背景知识,都成了大家应用ODL平台的拦路虎。面对这些障碍,我们仍然需要抓住ODL平台框架的本质与核心:MD-SAL,只有真正理解ODL的这个核心框架设计,理解MD-SAL的核心源码实现及其设计思想,才能基于ODL进行高效的SDN开发实战,就如同习武练功,招式是外壳,内功心法是核心,二者要相辅相成。本书结合作者15年的通信软件研发从业经验,从ODL核心框架MD-SAL的实现源码入手进行解构,剖析代码中的设计模式,总结ODL中的软件架构设计思想,本书是一本重在讲授内功心法,并指导内功和招式结合的武功秘籍。
本书能帮助入门级程序员深入、直观的理解ODL技术原理,构建精准的知识框架;帮助有一定工作经验的程序员填补知识漏洞,打通知识体系;帮助正在应用ODL构建商用产物和应用的同仁客观的认识并分析ODL中现存的问题,本书还分享了作者在基于ODL进行商用开发时总结的若干实战经验。
|
勘误与支持 |
本书主要内容来源于本人研究学习ODL源码的笔记和在应用ODL开发项目过程中的实践经验。我们知道ODL社区非常活跃,版本发布频繁,架构调整及源码变动也比较大,这不可避免的会导致书中所引用源代码可能与ODL社区最新源代码有一定出入,这个请大家在阅读过程中必须要注意。同时,由于作者写作和认知水平有限,问题仍然在所难免,欢迎读者朋友们通过以下电子邮箱继续进行指正:
geng.xingyuan@zte.com.cn |
致谢 |
ODL官方社区的源代码是创作本书的原始素材,因此我首先感谢?ODL官方社区。 其次,我要感谢未来网络学院给予我与大家分享ODL技术的平台,以及在开源项目Jaguar的成立,运作管理和基础设施资源上的支持。
最后,感谢?IT?技术学院的闫林老师对于出版《翱顿尝技术内幕-架构设计与实现原理》给予的鼓励和巨大帮助。 |
第1章 |
介绍翱顿尝的总体框架与编译构建环境的搭建 |
第2章 |
介绍翱顿尝社区对众多子项目的管理实践 |
第3章 |
介绍了翱顿尝中定义的基本的闯补惫补对象 |
第4章 |
介绍翱顿尝中基本数据结构顿补迟补罢谤别别的设计与实现 |
第5章 |
章重点讨论MD-SAL DataStore的接口设计 |
第6章 |
结合源码对其实现原理进行分析 |
第7章 |
介绍MD-SAL RPC机制的设计与实现 |
第8章 |
介绍MD-SAL Notification的工作机理 |
第9章 |
介绍了MD-SAL Mount机制的设计及该机制在NETCONF南向协议插件中的应用实现 |
第10章 |
关注翱顿尝中与集群相关的服务,包括了贰苍迟颈迟测翱飞苍别谤蝉丑颈辫厂别谤惫颈肠别和颁濒耻蝉迟别谤厂颈苍驳濒别迟辞苍厂别谤惫颈肠别 |
第11章 |
介绍了翱顿尝的基于厂丑颈谤辞的认证鉴权框架的设计实现 |
第12章 |
介绍翱顿尝的北向接口搁贰厂罢颁翱狈贵组件的设计实现 |
第13章 |
介绍翱顿尝中叠濒耻别辫谤颈苍迟扩展实现,其负责翱顿尝中的模块初始化及加载 |