实验1:SDN拓扑实践
实验1:SDN拓扑实践
一、实验目的
- 能够使用源码安装Mininet;
- 能够使用Mininet的可视化工具生成拓扑;
- 能够使用Mininet的命令行生成特定拓扑;
- 能够使用Mininet交互界面管理SDN拓扑;
- 能够使用Python脚本构建SDN拓扑。
二、实验环境
Ubuntu 20.04 Desktop amd64
三、实验要求
(一)基本要求
-
使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py。



-
使用Mininet的命令行生成如下拓扑:
a) 3台交换机,每个交换机连接1台主机,3台交换机连接成一条线。![]()
-
b) 3台主机,每个主机都连接到同1台交换机上。
-
![]()
-
在2 b)的基础上,在Mininet交互界面上新增1台主机并且连接到交换机上,再测试新拓扑的连通性。
![]()
-
编辑基本要求第1步保存的Python脚本,添加如下网络性能限制,生成拓扑:
a) h1的cpu最高不超过50%;
b) h1和s1之间的链路带宽为10,延迟为5ms,最大队列大小为1000,损耗率50。 -
1 #!/usr/bin/env python 2 3 from mininet.net import Mininet 4 from mininet.node import Controller, RemoteController, OVSController 5 from mininet.node import CPULimitedHost, Host, Node 6 from mininet.node import OVSKernelSwitch, UserSwitch 7 from mininet.node import IVSSwitch 8 from mininet.cli import CLI 9 from mininet.log import setLogLevel, info 10 from mininet.link import TCLink, Intf 11 from subprocess import call 12 13 def myNetwork(): 14 15 net = Mininet( topo=None, 16 build=False, 17 ipBase='10.0.0.0/8') 18 19 info( '*** Adding controller\n' ) 20 c0=net.addController(name='c0', 21 controller=Controller, 22 protocol='tcp', 23 port=6633) 24 25 info( '*** Add switches\n') 26 s1 = net.addSwitch('s1', cls=OVSKernelSwitch) 27 s2 = net.addSwitch('s2', cls=OVSKernelSwitch) 28 29 info( '*** Add hosts\n') 30 h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None,cpu=0.5) 31 h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None) 32 h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None) 33 h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None) 34 35 info( '*** Add links\n') 36 net.addLink(h1, s1,bw=10,delay='5ms',max_queue_size=1000,loss=50,use_htb=True) 37 net.addLink(h2, s1) 38 net.addLink(h3, s2) 39 net.addLink(s2, h4) 40 net.addLink(s1, s2) 41 42 info( '*** Starting network\n') 43 net.build() 44 info( '*** Starting controllers\n') 45 for controller in net.controllers: 46 controller.start() 47 48 info( '*** Starting switches\n') 49 net.get('s1').start([c0]) 50 net.get('s2').start([c0]) 51 52 info( '*** Post configure switches and hosts\n') 53 54 CLI(net) 55 net.stop() 56 57 if __name__ == '__main__': 58 setLogLevel( 'info' ) 59 myNetwork()
个人总结
在这次实验中,一开始运行miniedit.py的时候出现了一个错误,提示Mininet.Log模块无法找到,后经百度知道是因为python版本过低而导致的错误,后面将python的版本t通过软连接指向,解决了这个问题,在实验过程中对python这门语言语法比较生疏,希望可以通过这门课加强python的时候
在实验过程中学习了使用Mininet搭建拓扑测试拓扑连通性



浙公网安备 33010602011771号