实验5:开源控制器实践——POX

一、实验目的

1.能够理解 POX 控制器的工作原理;
2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;
3.能够运用 POX控制器编写自定义网络应用程序,进一步熟悉POX控制器流表下发的方法。

二、实验环境

1.下载虚拟机软件Oracle VisualBox 或 VMware;
2.在虚拟机中安装Ubuntu 20.04 Desktop amd64;

三、实验要求

1.搭建下图所示SDN拓扑,协议使用Open Flow 1.0,控制器使用部署于本地的POX(默认监听6633端口)

a

2.阅读Hub模块代码,使用 tcpdump 验证Hub模块;

  • 搭建拓扑,命令行代码sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow10

  • 开启pox,运行hub模块
    ./pox.py log.level --DEBUG forwarding.hub

  • 开启h2,h3主机终端
    mininet> xterm h2 h3

  • 在h2主机终端中输入tcpdump -nn -i h2-eth0

  • 在h3主机终端中输入tcpdump -nn -i h3-eth0

  • h1 ping h2

a

  • h1 ping h3

a

3.阅读L2_learning模块代码,画出程序流程图,使用 tcpdump 验证Switch模块。

  • 程序流程图

a

  • 开启pox,运行L2_learning模块
    ./pox.py log.level --DEBUG forwarding.l2_learning

  • h1 ping h2 (h3没有收到数据包,h2收到数据包)

a

  • h1 ping h3 (h2没有收到数据包,h3收到数据包)

a

四、个人总结

1.实验难度
中等,主要难在画流程图,因为要搞懂代码在写什么。

2.遇到的问题

  • 命令输入错误导致报错No such device exists
    a
    一开始我以为是pox出错了,结果再仔细一看发现是eth输入成了ech,非常粗心。
  • pox重复打开导致报错you may have another controller running
    在使用tcpdump验证Switch模块时,由于第一次我一直没有得到准确的结果,于是我决定关机重来,结果在开启pox时报错,解决方法是我又关机了一次,然后就可以正常运行了,让我感到有点奇怪。
  • 代码没有中文注释,非常难看懂
    解决方法:使用翻译软件

3.实验心得
通过这次实验,我能够理解POX控制器的工作原理;能够理解POX的forwarding.hub和forwarding.L2_learning模块,初步掌握POX控制器的使用方法。遗憾的是,我没有能够运用POX控制器编写自定义网络应用程序,进一步熟悉POX控制器流表下发的方法。还是希望以后做实验不要因为没有得到结果就果断关机重来了,感觉会出现更多问题,希望自己能完整了解了实验的步骤后再一步一步进行实验,tcpdump验证Switch模块时,本该是h2和h3中有一个收到数据包,另一个没有收到数据包,但是我一开始的实验结果是h2和h3都收到了数据包,这时我就觉得肯定不是我自己的问题,我明明输入了正确的代码,但是我没有仔细看,在开启pox的时候报错了,所以还是要从自己身上找问题。

posted @ 2021-10-11 19:08  oldmoney-lana  阅读(48)  评论(0编辑  收藏  举报