实验5:开源控制器实践——POX
一、搭建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
二、阅读Hub模块代码,使用 tcpdump 验证Hub模块
开启POX:./pox.py log.level --DEBUG forwarding.hub
-
h1 ping h2

-
h1 ping h3

-
很容易就可以发现h1 ping h2时h3能收到数据包,而h1 ping h3时h2能收到数据包,故符合Hub模块将报文广播类似集线器的设定。
三、阅读L2_learning模块代码,画出程序流程图,使用 tcpdump 验证Switch模块
开启POX:./pox.py log.level --DEBUG openflow.of_01 --address=127.0.0.1 --port=6633 forwarding.l2_learning
-
h1 ping h2

-
h1 ping h3

-
相较于Hub模块,Switch模块下只有相应主机才能收到数据包,类似于交换机根据地址只转发到对应端口。
-
流程图

水平有限就只能理解到这几部分了
实验总结
个人总结与想法
本次实验难度相较之前有较大提升,主要是进阶部分实在不知道怎么修改代码,大半夜看的头疼,索性放弃了。老师提供的更多pox指南是在github上靠运气连接,打开还全英文实在难受,英文能力更是有限。剩下的就还好吧,个别地方窗口打开顺序要注意下就没了。最后吐槽下我这个虚拟机的文字size小的不行还设置不好,多看看要瞎了。
困难与解决办法
1.最开始一直显示还有控制器在运行占用了端口(please shut down the controller which is running on port 6633)搞了半天才发现之前用ctrl+c关闭的mininet,使用sudo mn -c再重启虚拟机就好了。
2.再就是一开始不会抓包又发现无法运行l2_learning 模块,感谢张炜龙同学提供的Xterm以及运行 forwarding 文件夹下的 l2_learning 模块时问题解决办法,学习使用后顺利完成。
- PS:解决方法使用过的网址
[解决1]( https://blog.csdn.net/vivigreeeen/article/details/117783891#:~:text=在使用Mininet测试各种基础网络的时候出现以下错误: Excepti on%3A Please shut down the controller ,port%206633%20%3A%20%E5%8E%9F%E5%9B%A0%EF%BC%9A%E5%9B%A0%E4%B8%BA%E5%9C%A8%E9%80%80%E5%87%BAmininet%E7%9A%84%E6%97%B6%E5%80%99%E6%98%AF%E4%BD%BF%E7%94%A8ctrl-c%E9%80%80%E5%87%BA%E7%9A%84%EF%BC%8C%E6%89%80%E4%BB%A5%E5%AF%BC%E8%87%B4%20controller%20%E6%B2%A1%E6%9C%89%E8%A2%AB%E6%AD%A3%E5%B8%B8%E6%9D%80%E6%AD%BB%EF%BC%8C%E6%89%80%E4%BB%A5%E5%AF%BC%E8%87%B4%206633%20%E7%AB%AF%E5%8F%A3%E4%B8%80%E7%9B%B4%E8%A2%AB%E5%8D%A0%E7%94%A8%E3%80%82)
解决2

浙公网安备 33010602011771号