一、实验目的
- 能够理解 POX 控制器的工作原理;
- 通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;
- 能够运用 POX控制器编写自定义网络应用程序,进一步熟悉POX控制器流表下发的方法。
二、实验环境
Ubuntu 20.04 Desktop amd64
三、实验要求
(一)基本要求
- 搭建下图所示SDN拓扑,协议使用Open Flow 1.0,控制器使用部署于本地的POX(默认监听6633端口)
- 阅读Hub模块代码,使用 tcpdump 验证Hub模块;
h1 ping h2的tcpdump抓包结果
h1 ping h3的tcpdump抓包结果
- 阅读L2_learning模块代码,画出程序流程图,使用 tcpdump 验证Switch模块。
h1 ping h3的抓包结果
h1 ping h2的抓包结果
阅读L2_learning模块代码,画出程序流程图
个人总结(三)
本次实验整体难度较大,基础部分需要阅读L2_learning模块的代码并进行理解(好在其中提供了相关算法实现流程的英文注释),进阶部分更是要自己通过编写Python代码实现使用POX控制器下发流表,对于初次接触POX的我来说很不容易
forwarding.hub 组件的作用为:在每个交换机上安装泛洪通配符规则,将数据包广播转发,此时交换机等效于集线器。所以 h1 ping h2
或h1 ping h3
时h2 h3都能抓到包,后者是OpenFlow交换机实现L2自学习,h1 ping h2时候只有h2有接收到数据包,h1 ping h3只有h3能接收到数据包,从而验证了自学习功能。进一步了解了SDN流表匹配机制和OpenFlow协议超时机制以及ping,跟着ppt做实验时遇到了一些问题,比如弄错了hub模块和switch模块,进而敲错了代码,不过后来顺利解决了。总的来说只要按照实验流程来做就能做的出来。