不同于旧版的Hydrogen,新的OpenDaylight Helium版本,提供了一个更方便测试和管理SDN生产环境的平台给开发者,而通过可用于部署组件及应用的Apache Karaf容器,用户也可以按需求组合建构OpenDaylight组件功能。之前的技术类文章已经详细介绍过OpenDaylight最新氦版本的安装部署及与之前主力版本氢版本的详细比较。官方文档中说明OpenDaylight氦版本原生支持OF1.3协议,只需要安装相应的组件即可,同时界面上面也有很大的改动,那么下面我们就来验证一下氦版本的OpenDaylight是否可以用OF1.3来通信。
1 准备工作
我们需要有一台装有OpenDaylight Helium环境的主机(物理机、虚拟机皆可),安装教程详见《OpenDaylight的Helium(氦)版本安装》。由于氦版本启动后很吃内存,至少会占到1.5G以上,实验时大家最好将氦版本和Mininet装在能互相通信的的不同机器上操作,以免机器卡死。本文就是基于这种方式实验的。
另外,安装Mininet的Ubuntu版本号需要在13.10及以上,下面列出了Ubuntu各版本通过apt-get对应获取的Mininet版本。
表 1. Ubuntu各版本通过apt-get对应获取的Mininet版本
2 Mininet配置文件修改
2.1 Mininet2.1.0版本安装
在Ubuntu13.10下我们获取Mininet2.1.0版本。
1 |
# apt-get install mininet |
如果缺少相应环境依赖组件导致安装失败,请看《OpenDaylight与Mininet应用实战之基本环境搭建(一)》中Mininet安装部分。
安装好后查看Mininet版本号是否为2.1.0,Mininet2.1.0及以上版本才支持OF1.3。
1 2 |
# mn --version 2.1.0 |
2.2 Mininet2.1.0配置文件修改
为了让Mininet2.1.0支持OenFlow1.3,我们需要修改相应的配置文件。
1 2 |
# cd /usr/lib/python2.7/dist-packages/mininet # vim node.py |
按下图添加或修改配置文件中两处的相应字段。注意:因为是python文件,修改的时候必须格外注意每一行缩进,缩进错误会导致mininet无法启动或者启动后无法正常启用OF1.3协议。本人就是因为缩进错误导致无法启用OF1.3并误以为是OpenDaylight配置问题而倒腾了两天,赤果果的教训啊。
图 1. node.py配置文件修改(一)
图 2. node.py配置文件修改(二)
到这里Mininet安装配置完毕。
3 OpenDaylight氦版本与Mininet用OF1.3通信验证
3.1 用OF1.3通信
启动OpenDaylight Helium版,通过Mininet启用OF1.3并连接至OpenDaylight控制器。
1 |
# mn --mac --switch ovsk,protocols=OpenFlow13 --controller=remote,ip=,port=6633 |
图 3. 启用OF1.3的Mininet启动图
我们看到Mininet端使用了OpenFlow1.3协议,我们再pingall一下,看Mininet中主机是否能正常通信。
1 2 3 4 5 |
mininet> pingall *** Ping: testing ping reachability h1 -> h2 h2 -> h1 *** Results: 0% dropped (2/2 received) |
我们进入OpenDaylight的Web页面http://[host ip]:8181/dlux/index.html可以看到当前网络的图形化拓扑。
图 4. OpenDaylight Web界面
但是这时我们还不能完全确定OpenDaylight和Mininet是否是用OF1.3进行通信的,下面我们就来具体验证一下。
3.2 OF1.3通信验证
我们可以在Mininet端通过查看OF1.3交换机和流表信息的方式查看验证。
查看OF1.3交换机信息:
1 |
# ovs-ofctl -O OpenFlow13 show s1 |
图 5. OF1.3交换机信息图
查看交换机中OF1.3流表信息:
1 |
# ovs-ofctl dump-flows -O OpenFlow13 s1 |
图 6. OF1.3流表图
上述两张图说明Mininet和OpenDaylight之间通信是用OF1.3协议通信的,如果再不放心我们可以抓包查看。
图 7. 抓包分析图
通过分析抓包我们可以看到OpenDaylight和Mininet之间的控制面操作是用OF1.3协议通信的。
4 总结
通过本文的阐述及实践,我们看到最新的OpenDaylight氦版本可以直接与Mininet用OF1.3进行通信。在新版本的控制器上支持OF1.3协议并兼容OF1.0是必须且必然的。OF1.3的匹配字段更多,使得控制器的功能更加强大。想要具体了解OF1.3与1.0的区别可以参考《OpenFlow1.3协议概述及和1.0的区别》。