一、实验目的

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端口)

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


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

实验5:开源控制器实践——POX_流程图_02


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

实验5:开源控制器实践——POX_流程图_03


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

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


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

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

四、个人总结

1。遇到的问题
搭建拓扑的时候要末尾要改为OpenFlow10,因为之前都是用OpenFlow13,但是POX仅支持OpenFlow1.0,不然的话后面流程会出错。
其他跟着实验文档做都能得到结果,就是阅读英文文档太费劲。
2.实验收获
主要了解了hub模块与switch模块的区别:
在hub模块中,h1 ping h2、h3,h2和h3都能接收到数据包,因为hub模块采用洪泛转发,交换机会向所有端口进行洪泛转发,所以h2和h3主机都能接收到数据包。
在Switch模块中,交换机会到接收进来的包进行自学习,并从合适的端口发出,所以只有ping的目的主机可以收到报文。
3..实验评价
本次实验动手部分难度不高,照着老师的文档和阅读基本代码模块都能得到实验结果,但是真正理解起来真要命,文档一大堆,试着看过一遍英文文档。通过这次实验学会了pox的一些应用以及tcpdump命令,能够使用tcpdump进行抓包。主要在于阅读py模块代码和帮助文档,由于英文不是很好,看起来很花费时间,由于本周其他课程大作业较多以及课程快要到了结课考试,时间不是很多,因此进阶实验没法完成。看了其他同学的进阶作业,得出结果可能看起来不是很难吧?实在没空阅读文档就略去了。