cosarty

导航

实验1:SDN拓扑实践

实验1:SDN拓扑实践

一、实验目的

  1. 能够使用源码安装Mininet;
  2. 能够使用Mininet的可视化工具生成拓扑;
  3. 能够使用Mininet的命令行生成特定拓扑;
  4. 能够使用Mininet交互界面管理SDN拓扑;
  5. 能够使用Python脚本构建SDN拓扑。

二、实验环境

Ubuntu 20.04 Desktop amd64

三、实验要求

(一)基本要求

  1. 使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py。

  1. 使用Mininet的命令行生成如下拓扑:
    a) 3台交换机,每个交换机连接1台主机,3台交换机连接成一条线。

  2. b) 3台主机,每个主机都连接到同1台交换机上。

  3. 在2 b)的基础上,在Mininet交互界面上新增1台主机并且连接到交换机上,再测试新拓扑的连通性。

  4. 编辑基本要求第1步保存的Python脚本,添加如下网络性能限制,生成拓扑:
    a) h1的cpu最高不超过50%;
    b) h1和s1之间的链路带宽为10,延迟为5ms,最大队列大小为1000,损耗率50。

  5.  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搭建拓扑测试拓扑连通性

 

posted on 2022-09-21 22:32  caixai  阅读(35)  评论(0)    收藏  举报