实验目的
- 理解 OpenFlow 协议的工作原理;
- 能够通过 Wireshark 抓包软件对 OpenFlow 协议进行分析。
- 能够使用控制器 RYU 连接交换机,并对控制器与交换机的通信流程进行分析。
实验内容
使用 mininet 可视化工具创建网络拓扑,完成相关 IP 配置,并实现主机与主机之间的 IP 通信。用抓包软件 Wireshark 获取控制器与交换机之间的通信数据包。
修改基础技能中创建的 python 文件,并设置远程控制连接,启动 wireshark 和控制器 RYU,运行 python 文件后,在 wireshark 中查看控制器与交换机的通信流程,对具体消息进行分析。
实验步骤
-
利用 miniedit 创建如下拓扑
wireshark 使用
wireshark 启动需要 root 权限:sudo wireshark
控制器当前使用的 OpenFlow 版本有可能不同,如 OpenFlow v1.0 或 OpenFlow v1.3;根据 OpenFlow 版本,wireshark 过滤器输入 “openflow_v1” 或 “openflow_v4”;控制器设置
具体参考:https://github.com/mininet/mininet/wiki/Introduction-to-Mininet#extcontrollers
mininet 设置远程控制器的方法:
1)方法一
net = Mininet( topo=topo, controller=partial( RemoteController, ip='127.0.0.1', port=6633 ) )
2)方法二
net = Mininet( topo=topo, controller=lambda name: RemoteController( name, ip='127.0.0.1' ) )
3)方法三
net = Mininet( topo=topo, controller=None)
net.addController( 'c0', controller=RemoteController, ip='127.0.0.1', port=6633 )
- OpenFlow 消息
参见 OpenFlow 版本规范文件:
- openflow-spec-v1.0.0.pdf
- openflow-spec-v1.3.0.pdf
该文件描述了控制器与交换机通信的格式和通信内容。