jQuery火箭图标返回顶部代码 实验 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
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-1 追加路径
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-2 验证 jdk 8 配置成功
  • 安装 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 
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-3 安装并进入

启动 Mininet 虚拟机,生成一个最简拓扑并连接 OpenDaylight

  • 连接前应确认 Mininet 和 OpenDaylight 的网络互通,如果是安装在同一台虚拟机上,那么可以忽略。
  • 运行命令生成拓扑并连接控制器: 【同一台虚拟机上使用 127.0.0.1 即可】
$ sudo mn --switch ovs,protocols=OpenFlow13 --controller=remote,ip=127.0.0.1,port=6633 
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-4 生成拓扑并连接控制器成功

Wireshark 抓包分析 OpenFlow 1.3

  • sudo wireshark 命令开启 wireshark,选择 any,抓取所有数据包。
  • 为了能够抓到控制器和交换机最初的交互,应在 Mininet 拓扑创建前开启抓包。
  • 查看抓包结果,利用 openflow_v4 过滤出 OpenFlow 1.3 协议,可以看到 OpenFlow协议下,交换机和控制器的交互过程。
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-5 全部开启并成功抓包
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-6 查看 HELLO 数据包
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-7 查看 FEATURES_REPLY 数据包
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-8 查看 SET_CONFIG 数据包
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-8 查看 PACKET_OUT 数据包
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-9 查看 FLOW MOD 数据包
  • 用 OVS 命令查看交换机中确实存在相应版本的流表,cookie、priority 等信息可以上面的抓包能够对应上。
$ sudo ovs-ofctl dump-flows s1 -O OpenFlow13
jQuery火箭图标返回顶部代码
实验 5:OpenFlow 协议分析和 OpenDaylight 安装
图 5-10 OVS 查看流表信息



五、注意事项与心得体会

注意事项

  • 目标路径下文件夹尽量不要用括号,否则很容易出现路径错误;
  • home/local/usr 文件夹的操作需要 sudo;
  • 可以登录 127.0.0.1:8181/index.html 查看 OpenDayLight 控制器是否真的启动了【成功加载页面即算成功启动】;
  • 如果拓扑未能成功连接控制器,或者 WireShark 中抓取不到 OpenFlow 的数据包,大致解决方案有如下:
    • 没有安装插件或者安装出错,重新输入安装插件
    • 碳版本改换为铍版本,或者换为其他的 Linux 操作系统
    • WireShark 没有提前打开
    • 还有很多其他原因,请自行把控

心得体会

  • .bashrc 与 shell 个性化配置相关,例如环境变量的改变,路径以及命令;source 指令加载环境变量,使其环境变量生效;
  • 这次实验我的电脑出现了一个极大的无法解决的 bug :所有操作都没有任何问题,安装包经过他人验证也并没有错误,java 配置无误,碳版本控制器也正常打开,但就是无法抓到 OpenFLow 的数据包,于是和碳版本斗争了三天三夜之后放弃;改为铍版本,果然有效【抓狂(ノ=Д=)ノ┻━┻ 】,虽然不知道为啥。