五、Maven基础
ODL’s Hello World
如何基于ODL开发第一个程序
Maven是什么?
Maven核心 总结
- 三套生命周期
- 插件化设计及与生命周期的绑定
- 约定优于配置的原则
- 命令,pom配置
生命周期
Maven有三套相互独立的生命周期,这三套生命周期分别是:
- Clean Lifecycle:在进行真正的构建之前进行一些清理工作。
- Default Lifecycle:构建的核心部分,编译,测试,打包,部署等等。
- Site Lifecycle:生成项目报告,站点,发布站点。
每套生命周期都由一组阶段(Phase)组成,我们平时会在命令行输入的命令总会对应于一个特定的阶段。
mvn clean install
Clean生命周期
Site生命周期
Default生命周期(核心)
Maven插件
通过插件来具体实现
内置绑定的插件
自定义插件与绑定
依赖管理
依赖的传递性
依赖的范围
依赖范围影响传递性依赖
Maven仓库
项目配置文件pom.xml
- 实际例子
- pom的继承关系
- pom的聚合关系
约定优于配置的原则
Maven常用的约定
其实Maven的配置并不复杂
【本节都是概念。】
六、ODL APP 开发思路
ODL APP开发流程
七、ODL Hello
1.编辑工具:在开发平台上安装并解压idea.sh
2.打开工程:写yang文件,定义yang模型
(如图中rpc)
3.执行编译:打开yang,会自动生成相应的Java接口
cd apl
mvn clean install
4.接下来实现HelloService接口
5.Future
6.添加一个feature(注意目录和位置)
7.编译功能
cd ..
mvn clean install -DskipTests(跳过测试,会快一点)
或者直接运行程序
cd ..
cd karaf/target/
ls
cd assembly/bin
./karaf
list | grep hello
8.通过浏览器调用
admin
admin
点击FORM
输入ODL,显示Hello ODL,证明成功
八、子项目L2Switch
L2 Switch项目背景
模块划分
代码实现
yang数据模型
主要是一些报文的定义
对于报文,都封装成了notification
原理:
首先,接收openflow plugin转发过来的packetin的notification,
对解析出来的报文再封装成notification发布出去(给其他模块订阅)。
基于解码器实现
监听报文,进行解码,再publish出去
arphandler
对解码包文进行监听处理
如果能查到目的MAC,就作为单播出去
查不到,就洪泛出去。(与传统交换机处理的逻辑是类似的)
addresstracker
主要是把学习到的MAC IP地址存到对应端口下面,是一个IP地址学习的过程
定义了一个模型
主要处理代码:writer–写库
监听报文
将原MAC目的MAC解出来
hosttracker
类似
定义主机,相应属性
对监听数据,存在本地map中
将学习到主机的信息放到拓扑中去
(似乎这是在讲解模型代码,才看明白。。。)
监听拓扑库,监听到link变化后根据gragh图,看是否是环路,根据节点信息恢复状态,下载初始的流表,上送到控制器,形成网络的拓扑,在openflow glugin manager 中下发初始流表,监听变化,形成拓扑库,顺便维护信息,将环路信息写到model定义的节点下面。
I2switch-main
一开始监听节点的上限信息
下一条流表
处理流表
依赖到已经学习到的MAC地址,相关状态信息