2021 SDN实验1:拓扑实践
实验1:SDN拓扑实践
一、实验目的
1.能够使用源码安装Mininet;
2.能够使用Mininet的可视化工具生成拓扑;
3.能够使用Mininet的命令行生成特定拓扑;
4.能够使用Mininet交互界面管理SDN拓扑;
5.能够使用Python脚本构建SDN拓扑。
二、实验环境
1.下载虚拟机软件Oracle VisualBox 或 VMware;
2.在虚拟机中安装Ubuntu 20.04 Desktop amd64;
三、实验要求
(一)基本要求
1.在Ubuntu系统的home目录下创建一个目录,目录命名为学号。
2.在创建的目录下,完成Mininet的源码安装。
3.使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py。
· 生成下图所示的拓扑
· 保存拓扑文件名为031902210.py
4.使用Mininet的命令行生成如下拓扑:
a)3台交换机,每个交换机连接1台主机,3台交换机连接成一条线。
· 用命令行' sudo mn --topo linear,3 '生成线性拓扑
b)3台主机,每个主机都连接到同1台交换机上。
· 用命令行' sudo mn --topo=single,3 '生成简单拓扑
5.在4b)的基础上,在Mininet交互界面上新增1台主机并且连接到交换机上,再测试新拓扑的连通性。
· addHost(),addLink()添加主机h4和链路,attach()给s1添加端口,setIP()给h4设置ip
6.编辑(一)中第3步保存的Python脚本,添加如下网络性能限制,生成拓扑:
a)h1的cpu最高不超过50%;
b)h1和s1之间的链路带宽为10,延迟为5ms,最大队列大小为1000,损耗率50。
· 用命令行' vim 031902210.py '编辑,进行修改后' :wq! '保存
· 再运行检测并测试' net.iperf((h1, h3)) '链路带宽
(二)进阶要求
编写Python脚本,生成如下数据中心网络拓扑,要求:
· 编写.py拓扑文件,命名为“学号_fattree.py”;
· 必须通过Mininet的custom参数载入上述文件,不得直接使用miniedit.py生成的.py文件;
· 设备名称必须和下图一致;
· 使用Python的循环功能实现,不得在代码中手工直接添加设备和链路。
步骤 :
· 用命令行' touch 031902210_fattrre.py '创建。
· 用命令行' vim 031902210_fattrre.py '编辑,贴文档中代码
· 利用custom参数' sudo mn --custom 031902210_fattrre.py --topo mytopo'加载py文件
(三)实验报告
· 本次实验环境在VisualBox上安装Ubuntu系统,并用源码安装Mininet。通过利用可视化工具或命令创建各种拓朴结构,检测连通性,测试链路带宽等。
该实验难度偏难,可能第一次接触,但前期实验环境配置和后期完成实验要求,皆可通过帮助文档,网络资料,自行摸索等方式解决。
· 问题1:开始想启动可视化工具,./miniedit.py出现 No such file or directory 问题,多次搜索并尝试后,通过手动选择Python版本、修改对应配置文件解决问题。
出现原因:Ubuntu 装有多个版本的 Python ,mininet是基于python实现的,确切地说现在需要python3运行它,要让系统将python默认为是执行python3。
· 问题2: 要求5,增加新主机h4,并增加相应链路后,pingall后50% dropped。学习别人后,需给s1添加端口,给h4设置ip解决该问题。
· 通过该实践熟悉掌握了一些常用Linux命令,能够使用Mininet的可视化工具生成拓扑、命令行生成特定拓扑、Python脚本编写自定义拓朴,并在交互界面管理SDN拓扑。了解到Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。
虽然磕磕绊绊完成了实验,但过程和结果都出现了一些或大或小的问题仍需要解决,还有一些要求可以通过不同的方式(命令)实现,更值得我课后学习!