实验6:开源控制器实践——RYU
实验目的
- 能够独立部署RYU控制器;
- 能够理解RYU控制器实现软件定义的集线器原理;
- 能够理解RYU控制器实现软件定义的交换机原理。
实验要求
(一)基本要求
- 搭建下图所示SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。
- 建立拓扑sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk
-
连接Ryu控制器
ryu-manager ryu/ryu/app/gui_topology/gui_topology.py --observe-links
-
通过Ryu的图形界面查看网络拓扑
在浏览器中输入地址http://127.0.0.1:8080即可打开ryu的图形界面 -
- 运行L2Switch
ryu-manager L2Switch.py
pingall可以ping通 -
- 开启主机终端 mininet>
xterm h2 h3
- 在h2主机终端中输入
tcpdump -nn -i h2-eth0
- 在h3主机终端中输入
tcpdump -nn -i h3-eth0
- h1 ping h2
h1 ping h3
运行结果:
运行ryu-manager L2xxxxxxxxx.py
mininet>dpctl dump-flows
个人总结
- 实验最开始就遇到了问题
TypeError: cannot set 'is_timeout' attribute of immutable type 'TimeoutError'
,查找相关资料后通过pip install https://github.com/eventlet/eventlet/archive/master.zip
解决了问题,当随后又出现了新的问题AttributeError: module 'collections' has no attribute 'MutableMapping'
,最后通过https://blog.csdn.net/lishuaigell/article/details/125221750该帖子中的修改相关路径文件中的collections.MutableMapping为collections.ac.MutableMapping成功解决。 - 通过本次实验学会了独立部署Ryu控制器;能够理解Ryu控制器实现软件定义的集线器原理以及Ryu控制器实现软件定义的交换机原理。