一、实验环境
1.下载虚拟机软件Oracle VirtualBox 或 VMware;
2.在虚拟机中安装Ubuntu 20.04 Desktop amd64。
二、 实验要求
- 使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py。
- 编辑基本要求第1步保存的Python脚本,添加如下网络性能限制,生成拓扑:
a) h1的cpu最高不超过50%;
b) h1和s1之间的链路带宽为10,延迟为5ms,最大队列大小为1000,损耗率50。
3.使用Python的循环语句实现编写下图所示数据中心胖树拓扑文件,要求交换机名称、链路信息均与图中一致,拓扑文件命名为“学号_fattree.py”;
通过Mininet的custom参数载入“学号_fattree.py”,实现在Mininet上创建Fat-Tree拓扑,设备名
称必须和下图一致;
4. 使用mininet形成要求1的拓扑结构并通过设置创建OVS交换机以及s1与s2的流表达成主机连通性要求:
·h1 – h3互通
·h2 – h4互通
·其余主机不通
5.将命令写到代码里,在构造拓扑的时候就把命令下发,阅读SDNLAB实验使用Mininet,编写Python代码,生成4中的SDN拓扑,并在代码中直接使用OVS命令,做到可以直接运行Python程序完成和4相同的VLAN划分。
1.拓扑文件的执行生成
使用Mininet生成要求拓扑保存后,可以输入sudo python3 学号.py
生成拓扑,结果如下:
2.拓扑文件相关网络性能限制
打开相应的python拓扑文件对相应网络性能限制如下:
3.数据中心胖树拓扑的生成(拓展)
按照要求生成数据中心胖叔拓扑python代码如下:
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController,CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
class MyTopo( Topo ):
"Simple topology example."
def __init__( self ):
"Create custom topo."
# Initialize topology
Topo.__init__( self )
L1 = 2
L2 = L1 * 2
L3 = L2 * 2
a = []
b = []
c = []
# add core ovs
for i in range( L1 ):
sw = self.addSwitch( 's{}'.format( i + 1 ) )
a.append( sw )
# add aggregation ovs
for i in range( L2 ):
sw = self.addSwitch( 's{}'.format( L1 + i + 1 ) )
b.append( sw )
# add edge ovs
for i in range( L3 ):
sw = self.addSwitch( 's{}'.format( L1 + L2 + i + 1