实验1:SDN拓扑实践
实验目的
1. 能够使用源码安装Mininet;
2. 能够使用Mininet的可视化工具生成拓扑;
3. 能够使用Mininet的命令行生成特定拓扑;
4. 能够使用Mininet交互界面管理SDN拓扑;
5. 能够使用Python脚本构建SDN拓扑。
实验环境
Ubuntu 22.04.01 LTS Desktop amd64
实验要求
基本要求
1.使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py。
运行结果截图
2.使用Mininet的命令行生成如下拓扑:
a)3台交换机,每个交换机连接1台主机,3台交换机连接成一条线。
运行结果截图
b) 3台主机,每个主机都连接到同1台交换机上。
运行结果截图
3.在2 b)的基础上,在Mininet交互界面上新增1台主机并且连接到交换机上,再测试新拓扑的连通性。
运行结果截图
4.编辑基本要求第1步保存的Python脚本,添加如下网络性能限制,生成拓扑:
a) h1的cpu最高不超过50%;
b) h1和s1之间的链路带宽为10,延迟为5ms,最大队列大小为1000,损耗率50。
采用命令行方式
运行结果截图
进阶要求
编写Python脚本,生成如下数据中心网络拓扑,要求:
- 编写.py拓扑文件,命名为“学号_fattree.py”;
- 必须通过Mininet的custom参数载入上述文件,不得直接使用miniedit.py生成的.py文件;
- 设备名称必须和下图一致;
- 使用Python的循环功能实现,不得在代码中手工直接添加设备和链路。
运行结果截图
个人总结
实验难度
从操作复杂度与自我检错来看,上次实验比这次实验要复杂许多,遇到的问题及其解决方案都各不相同,且途中可能会遇到版本不兼容等问题需要重新配置环境,又如因从外网下载速度受限制导致无法下载等;而本次实验的易错点则集中在个人的应用程序使用上,几乎甚至无需考虑是否因软件导致的一系列问题,然而,我在操作途中也遇到了版本不兼容的问题,通过更新UbuntuOS的Python版本很好地解决了这种问题。因此,我们在遇到问题的时候要先确定一个大的方向,是个人因素还是系统因素抑或是网络等其他纷繁多样的缘故,然后再具体到细枝末节的点,而在此过程中,我们也能逐渐培养起较好的耐心及解决问题的热情。
所遇困难及其解决方案
运行进阶实验时发生报错,截图如下
根据命令行提示,起初以为是TAB与空格格式出错,毕竟Python严格的代码格式规范摆在那,然而尝试修改了数番无疾而终,便转头思考是否是Python版本的问题,然后便更新了一下Python后运行直接成功。
个人感想
Mininet可以简单、迅速地创建一个支持用户自定义的网络拓扑,缩短开发测试周期;可以运行真实的程序,在Linux上运行的程序基本上可以都可以在Mininet上运行,如Wireshark;Mininet支持Openflow,在Mininet上运行的代码可以轻松移植到支持OpenFlow的硬件设备上;Mininet可以在自己的电脑,或服务器,或虚拟机,或者云(例如Amazon EC2)上运行;Mininet提供python API,简单易用
加深了对Mininet工作模式的理解,对其使用方式也更熟练。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/289491.html