实验五:开源控制器实践——POX
实验目的
- 能够理解 POX 控制器的工作原理;
- 通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;
- 能够运用 POX控制器编写自定义网络应用程序,进一步熟悉POX控制器流表下发的方法。
实验环境
- 下载虚拟机软件Oracle VisualBox 或 VMware;
- 在虚拟机中安装Ubuntu 20.04 Desktop amd64;
实验要求
一:搭建下图所示SDN拓扑,协议使用Open Flow 1.0,控制器使用部署于本地的POX(默认监听6633端口)
二:阅读Hub模块代码,使用 tcpdump 验证Hub模块;
1.打开POX:
2.端口监听
3.验证:
- h1pingh2
- h1pingh3
可以发现不论是h1 ping h3还是h1 ping h2 其他的主机都能接收到包。可以知道这为洪泛转发
三:阅读L2_learning模块代码,画出程序流程图,使用 tcpdump 验证Switch模块。
程序流程图:
一:在pox文件目录下开启终端,输入命令:./pox.py log.level --DEBUG forwarding.l2_learning开启switch模块
二:端口监听
h1 ping h2
h1 ping h3
当h1 ping h2时候只有h2有接收到数据包,而当h1 ping h3时候也同样只有h3能接收到数据包,因此验证了switch模块的自学习功能,数据包只会发送给相应的主机
个人感想
此次实验难度较大。中间遇到了较多问题。一开始忘记先进行端口的监听就开始主机之间的通信,无法得到结果。才发现出错了。
然后在对switch模块进行验证时,发现了端口非正常关闭的现象。在求助同学之后得知要重启虚拟机便可以了。
最后便是对代码的理解后画出流程图,难度高。
本次实验后对pox的使用有了初步的认识,对hub模块的洪泛转发功能和switch的自学习功能有了验证性的认识。也体验了主机的命令行终端下抓包的效果。