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

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

实验5:开源控制器实践——POX_自定义_02

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

  • 构建POX
    实验5:开源控制器实践——POX_ubuntu_03

  • xterm h2 h3打开h2,h3主机终端
    h1 ping h2,h3也能接受到数据包
    实验5:开源控制器实践——POX_自定义_04

h1 ping h3,h2也能接受到数据包
实验5:开源控制器实践——POX_工作原理_05

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

  • 流程图
    实验5:开源控制器实践——POX_自定义_06

  • 构建POX ./pox.py log.level --DEBUG forwarding.l2_learning
    实验5:开源控制器实践——POX_应用程序_07

  • h1 ping h2,h2可以收到数据包,h3不行
    实验5:开源控制器实践——POX_自定义_08

  • h1 ping h3,h3可以收到数据包,h2不行
    实验5:开源控制器实践——POX_流程图_09

四、实验心得

  • 这次实验总体上不难,实验环境的安装也比上次简单很多,本次实验学习了pox控制器的相关知识,根据实验内容验证了pox中hub模块功能,同时通过阅读源码,了解了L2_Learning运行机制,进一步熟悉流表下发的操作。
  • 在看源码的过程中,也对一些之前不太了解的python语法,有了一定的认识。
  • 在安装ryu的过程中,发现老师发的PDF文档有一处有误,检查ryu版本的命令是“ryu --version”,在文档中少了一个小杠号。