一、搭建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 模块时问题解决办法,学习使用后顺利完成。