实验5:开源控制器实践——POX
实验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端口)
拓扑生成命令如下
sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow10
2.阅读Hub模块代码,使用 tcpdump 验证Hub模块;
tcpdump -nn -i h2-eth0 #抓取h2-eth0端数据包
tcpdump -nn -i h3-eth0 #抓取h3-eth0端数据包
h1 ping h3
h1 ping h2
3.阅读L2_learning模块代码,画出程序流程图,使用 tcpdump 验证Switch模块。
h1 ping h2
h1 ping h3
程序流程图如下
个人总结
本次实验不考虑进阶部分个人认为相较于上次实验来说难度会低上一些,基础要求部分全局预览并无太难部分,但要注意诸如pox只支持openflow1.0这样的小细节
基本要求第二题和第三题的使用 tcpdump分别验证Hub模块和验证Switch模块,用tcpdump -nn -i h2-eth0
抓取h2-eth0端口的数据包,在h2和h3的命令终端可以很清楚地看到,在使用Hub模块时h2和h3都会抓包信息,而使用switch模块时只有对应的主机才会有对应的抓包信息,很明显Hub模块是类似一种广播,而switch模块采用的应该是一种类似直通式交换的方法