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

一、实验目的

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

二、实验环境

Ubuntu 20.04 Desktop amd64

三、实验要求

(一)基本要求

  1. 搭建下图所示SDN拓扑,协议使用Open Flow 1.0,控制器使用部署于本地的POX(默认监听6633端口)
  2. 阅读Hub模块代码,使用 tcpdump 验证Hub模块;

h1 ping h2的tcpdump抓包结果

h1 ping h3的tcpdump抓包结果

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

h1 ping h3的抓包结果

h1 ping h2的抓包结果

阅读L2_learning模块代码,画出程序流程图

个人总结(三)

本次实验整体难度较大,基础部分需要阅读L2_learning模块的代码并进行理解(好在其中提供了相关算法实现流程的英文注释),进阶部分更是要自己通过编写Python代码实现使用POX控制器下发流表,对于初次接触POX的我来说很不容易

forwarding.hub 组件的作用为:在每个交换机上安装泛洪通配符规则,将数据包广播转发,此时交换机等效于集线器。所以 h1 ping h2h1 ping h3时h2 h3都能抓到包,后者是OpenFlow交换机实现L2自学习,h1 ping h2时候只有h2有接收到数据包,h1 ping h3只有h3能接收到数据包,从而验证了自学习功能。进一步了解了SDN流表匹配机制和OpenFlow协议超时机制以及ping,跟着ppt做实验时遇到了一些问题,比如弄错了hub模块和switch模块,进而敲错了代码,不过后来顺利解决了。总的来说只要按照实验流程来做就能做的出来。

posted @ 2022-10-20 09:25  kldzt  阅读(9)  评论(0编辑  收藏  举报