实验5:开源控制器实践——POX
实验5:开源控制器实践——POX
第一部分:基本实验
实验步骤1
- 步骤内容:搭建下图所示SDN拓扑,协议使用Open Flow 1.0,控制器使用部署于本地的POX(默认监听6633端口),在命令行终端输入命令:sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow10
实验步骤2
- 步骤内容:阅读Hub模块代码,使用 tcpdump 验证Hub模块;
- 首先在pox文件目录下开启终端,输入命令:./pox.py log.level --DEBUG forwarding.hub开启hub模块
- 然后再mininet命令行中输入命令xterm h1 h2 h3开启h1 h2 h3的命令行终端
- 在h2命令行终端输入命令:tcpdump -nn -i h2-eth0开启h2抓包(抓取eth0端口)、h3类似
- 之后就在h1命令行终端中输入相应命令来验证hub模块
执行结果
-
mininet输入命令 h1 ping h2
-
h2 h3抓包结果
-
由抓包结果可知,h2对应10.0.02 h3对于10.0.0.3,因此可以直接在h1命令行终端输入ping 10.0.0.3来代替h1 ping h3,h2 h3抓包结果
-
无论h1 ping h2还是h3,都可以从h2 h3中抓到数据包,因此验证了hub模块的洪泛转发。
实验步骤3
- 步骤内容:阅读L2_learning模块代码,画出程序流程图,使用 tcpdump 验证Switch模块。
- 流程图如下
- 首先在pox文件目录下开启终端,输入命令:./pox.py log.level --DEBUG forwarding.l2_learning开启switch模块
- 然后再mininet命令行中输入命令xterm h1 h2 h3开启h1 h2 h3的命令行终端
- 在h2命令行终端输入命令:tcpdump -nn -i h2-eth0开启h2抓包(抓取eth0端口)、h3类似
- 之后就在h1命令行终端中输入相应命令来验证switch模块
执行结果
-
h1命令行终端输入ping 10.0.0.2抓取h2 h3eth0端口的数据包
-
h1命令行终端输入ping 10.0.0.3抓包结果
-
当h1 ping h2时候只有h2有接收到数据包,而当h1 ping h3时候也同样只有h3能接收到数据包,因此验证了switch模块的自学习功能
数据包只会发送给相应的主机
第二部分:反思与总结
实验难度
较难
实验过程遇到的难题
在清除流表之后,发现pingall了以后主机间还是相互连通,想起了之前的理论知识,流表具有存活性,因此需要重启一下虚拟机,才能成功。
反思
通过本次实验,使我对pox的使用有了初步的认识与掌握,对hub模块的洪泛转发功能已经switch模块的自学习功能有了深刻的理解,懂得他们的工作方式,学以致用,对我对于sdn这门课的了解,更加深入,能够理解 POX 控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够运用 POX控制器编写自定义网络应用程序,进一步熟悉POX控制器流表下发
的方法。