实验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控制器流表下发
的方法。

posted @ 2021-10-12 23:26  巴鲁ac  阅读(119)  评论(0编辑  收藏  举报