目录
SDN-OpenDaylight(Solium版本)应用开发入门HelloWorld
SDN-OpenDaylight(Solium版本)应用开发入门Toster
书籍推荐
《软件定义网络:SDN与OpenFlow解析》
《OpenDaylight应用指南》
《重构网络 SDN架构实现》
《深入理解OSGi原理》
《Maven权威指南中文版》
网站推荐
OpenDaylight
简介
开源控制器有很多,比如Floodlight、Ryu、ONOS等。博主学习的是OpenDaylight,因为这个比较火,容易找到资料。OpenDaylight是目前备受瞩目的开源控制器之一,是一款基于Java开发的控制器。
特点
南向接口不仅支持OpenFlow(博主学习的这个,以后会讲到),还支持SNMP、PCEP、BGP-LS、OF-Config等其他标准化协议,甚至允许出现私有化接口。
引入了服务抽象层(博主学习的MD-SAL),这使得上下层模块之间的调用可以相互隔离,屏蔽多种南向协议的差异,为上层的功能模块提供一致性服务。
北向提供开放可扩展的API,用户可根据需要通过调用函数或者REST接口开发应用(博主这里学习的REST API)。
OpenDaylight具有模块化、可扩展的控制器核心。采用开放服务网关(Open ServiceGateway Initiative,OSGi)体系结构(可以看看推荐的第三本书籍),解决功能组件之间的隔离问题,实现代码和功能的灵活加载,并可支持运行时业务或应用的安装、更新、删除等插拔操作。
使用YANG工具可直接生成业务管理的“骨架”,开发者只需专注于具体业务,根据业务驱动模型工具来设计接口,实现业务功能。
OpenDaylight拥有一个开源的分布式数据网格平台,该平台不仅能实现数据的存储、查找和监听,更重要的是它使OpenDaylight支持控制器集群。
版本
OpenDaylight版本按元素周期表来命名,截止写这篇文章,已经发布到钠(Sodium)版本。书籍总是滞后的,前面的版本有试过安装,有些插件安装不上,博主也不喜欢安装最新版本,选择的是氮版本,在下面的相关文章里面有安装的方式。
相关文章
SDN-Opendaylight(Nitro版本)安装使用
ONOS
简介
官网:ONOS官网
相关文章
SDN-ONOS1.x学习记录(安装、拓扑、命令、图形化界面)
Mininet
简介
Mininet是一款轻量级网络仿真器,目前的版本已经可视化,
更多介绍:https://github.com/mininet/mininet/wiki/Introduction-to-Mininet
Github:Mininet
官网:Mininet
版本
Mininet支持可视化(2.2.0+),所以建议安装2.2.0之后的版本,相关文章里面有安装步骤。官网里面给了三种方式,小伙伴们多看看官网的Walkthrough部分。
相关文章
SDN-Mininet安装使用
SDN-Postman及python编程对流表的操作
OpenFlow
OpenFlow,一种网络通信协议,属于数据链路层,能够控制网上交换器或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。
OpenFlow交换机将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow交换机(OpenFlow Switch)和控制服务器(Controller)来共同完成,从而实现了数据转发和路由控制的分离。控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的。
在OpenDaylight中,OpenFlow2]的实现分为OpenFlowJava和OpenFlowPlugin两部分。
其中,OpenFlowJava负责面向南向设备完成OpenFlow协议的序列化、反序列化、端口监听以及消息收发,而OpenFlowPlugin负责完成OpenFlow协议的状态管理、会话管理、事件处理等,向SAL层提供服务。
相关文章
SDN-OpenFlow1.0协议分析
SDN-openflow1.0抓包分析
SDN-流表分析与增删改查
SAL
AD-SAL
AD-SAL是SAL的早期实现,它使用API调用的方式抽象服务层,将接口和实现进行分离。AD-SAL会将API的调用适配为北向或者南向插件提供的实现实例。AD-SAL有强制固定的部分,不够灵活。
MD-SAL
相较于AD-SAL而言,MD-SAL(Model-Driven SAL,基于模型驱动的服务抽象层)加入了自动化的部分,是SAL的当前主推版本,它采用数据为中心的服务抽象层框架,使用模型化语言——YANG描述业务的数据结构以及统一南北向接口。除此之外,它还提供消息传递和数据存储,因此,可以将它视为一个消息总线、内存数据库以及请求路由的结合体。
- MD-SAL模型驱动的服务抽象层,为Apps和Plugins开发提供同意支持
- 提供Request Routing和用来实现抽象服务和相应API的基础框架
- 抽象服务和API都由各个Plugin通过Yang Model定义
- Yang Tools Plugin根据Yang Model的定义自动生成API,生成相应Java代码
- 开发者通过实现自动生成的Service Interface来实现具体的API功能和服务内容
- Plugin通过MD-SAL和生成的API(Rpc,Notification),DataStore去利用其他Plugin的服务和数据
- 所有功能模块的信息交互,数据存储调用都通过MD-SAL完成
名词解释
- Rpc(Remote Procedure Call):提供服务的远程调用接口
- Notification:提供通知,可以发出通知和接收通知。
- DataStore:提供数据存储,读取,Transaction(事务)等功能。
- Request Routing:提供请求路由功能,把外部请求传送到正确的Plugin和Node instance处理。
- Node instance:Yang结构树上的节点实例
- Restconf Subsystem:自动定义和创建Restconf API的Plugin
- Config subsystem:提供统一的配置文件管理功能的Plugin
YANG
在OpenDaylight中,YANG同样有两种功能:数据描述和接口描述。OpenDaylight中的YANG文件格式有两种,一种是基于MD-SAL的应用/插件,一种是基于ConfigSubSystem的启动配置。
OpenDaylight应用开发
SDN-OpenDaylight(Solium版本)应用开发入门HelloWorld
SDN-OpenDaylight(Solium版本)应用开发入门Toster
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!
如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。