软件定义网络(SDN)第五次实验报告
目录
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
=============================================
一、实验目的
回顾 JDK 安装配置,了解 OpenDaylight 控制的安装,以及 Mininet 如何连接; 通过抓包获取 OpenFlow 协议,验证 OpenFlow 协议和版本,了解协议内容。
二、实验任务
Mininet 生成拓扑连接 OpenDaylight,在 Mininet 上通过 ping 抓包验证 OpenFlow 1.3 协议
三、实验要求
- 根据实验步骤重复上述实验。
- 在博客园发表一篇博客,记录最终的结果、实验过程遇到的问题和解决办法。
四、具体实验步骤
安装 OpenDaylight 控制器
- 先安装 jdk 8 环境
$ Mkdir /usr/local/java
$ sudo mkdir /usr/local/java
$ sudo cp ~/Desktop/jdk-8u261-linux-x64.tar.gz /usr/local/java
$ sudo tar -zxvf jdk-8u261-linux-x64.tar.gz
$ gedit ~/.bashrc
<--在文件末尾追加内容如下-->
export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
<--保存退出-->
$ source ~/.bashrc
$ java -version
- 安装 Beryllium 版本的 OpenDayLight 控制器及其插件
$ tar -zxvf distribution-karaf-0.4.4-Beryllium-SR4.tar.gz
$ ./distribution-karaf-0.4.4-Beryllium-SR4/bin/karaf
...
> feature:install odl-restconf odl-l2switch-switch-ui odl-openflowplugin-all odl-mdsal-apidocs odl-dlux-core odl-dlux-node odl-dlux-yangui
启动 Mininet 虚拟机,生成一个最简拓扑并连接 OpenDaylight
- 连接前应确认 Mininet 和 OpenDaylight 的网络互通,如果是安装在同一台虚拟机上,那么可以忽略。
- 运行命令生成拓扑并连接控制器: 【同一台虚拟机上使用 127.0.0.1 即可】
$ sudo mn --switch ovs,protocols=OpenFlow13 --controller=remote,ip=127.0.0.1,port=6633
Wireshark 抓包分析 OpenFlow 1.3
- sudo wireshark 命令开启 wireshark,选择 any,抓取所有数据包。
- 为了能够抓到控制器和交换机最初的交互,应在 Mininet 拓扑创建前开启抓包。
- 查看抓包结果,利用 openflow_v4 过滤出 OpenFlow 1.3 协议,可以看到 OpenFlow协议下,交换机和控制器的交互过程。
- 用 OVS 命令查看交换机中确实存在相应版本的流表,cookie、priority 等信息可以上面的抓包能够对应上。
$ sudo ovs-ofctl dump-flows s1 -O OpenFlow13
五、注意事项与心得体会
注意事项
- 目标路径下文件夹尽量不要用括号,否则很容易出现路径错误;
- home/local/usr 文件夹的操作需要 sudo;
- 可以登录 127.0.0.1:8181/index.html 查看 OpenDayLight 控制器是否真的启动了【成功加载页面即算成功启动】;
- 如果拓扑未能成功连接控制器,或者 WireShark 中抓取不到 OpenFlow 的数据包,大致解决方案有如下:
- 没有安装插件或者安装出错,重新输入安装插件
- 碳版本改换为铍版本,或者换为其他的 Linux 操作系统
- WireShark 没有提前打开
- 还有很多其他原因,请自行把控
心得体会
- .bashrc 与 shell 个性化配置相关,例如环境变量的改变,路径以及命令;source 指令加载环境变量,使其环境变量生效;
- 这次实验我的电脑出现了一个极大的无法解决的 bug :所有操作都没有任何问题,安装包经过他人验证也并没有错误,java 配置无误,碳版本控制器也正常打开,但就是无法抓到 OpenFLow 的数据包,于是和碳版本斗争了三天三夜之后放弃;改为铍版本,果然有效【抓狂(ノ=Д=)ノ┻━┻ 】,虽然不知道为啥。