Mininet应用实践

实验环境

  • 虚拟机软件(vmware workstation)
  • 装有mininet、python2 的Ubuntu20.04

实验目的

  • 能够运用mininet可视化工具创建网络拓扑结构
  • 能够运用mininet交互界面创建网络拓扑结构
  • 能够运用python脚本构建网络拓扑结构

实验内容

  • 基础技能:
    • 用可视化工具miniedit创建一个网络拓扑;
    • 命令行创建拓扑;
    • 交互式界面创建主机、交换机等
    • 对节点间进行ping测试
  • 进阶技能:
    • 编写python脚本完成对于计算机网络拓扑结构的构建

实验步骤

  1. 可视化工具创建拓扑

    1. 进入/mininet/examples目录下,右键在终端打开
    2. 在终端输入python2 miniedit.py
    3. 创建简单拓扑
  2. 命令行创建拓扑
    (1) 最小的网络拓扑,一个交换机下挂两个主机。

    sudo mn --topo minimal
    

    (2) line线性拓扑,每个交换机连接一个主机,交换机间相连接。本例:3个交换机,2个主机。

    sudo mn --topo linear,3,2
    

    (3) 单一拓扑,每个主机都连接到同一个交换机上。本例:3个主机,一个交换机。

    sudo mn --topo single,3
    

    (4) tree 树形拓扑,定义深度和扇出形成基于树的拓扑。本例:深度3,扇出2。

    sudo mn --topo=tree,3,2
    

  3. 交互式界面创建主机、交换机等

    1. 通过命令sudo mn,创建出最简单的拓扑结构也就是一个交换机下面直接连接两个主机,并且产生 mininet 的交互界面。
    2. 输入py net.addHost('主机名') 为拓扑结构添加主机。
    3. 输入py net.addSwitch('交换机名称')为拓扑结构添加交换机。
    4. 查看拓扑结构中存在的网络设备,观察设备是否被成功添加。
  4. 对节点间进行ping测试

    1. pingall 查看所有主机之间的通信状况。
    2. h1 ping -c4 h2 : h1 向 h2 发送四个包,测试 h1 与 h2 之间的通信
  5. 编写python脚本完成对于计算机网络拓扑结构的构建

    1. 编写 Python 脚本,定义如下拓扑:
      i. topo linear,4
      from mininet.topo import LinearTopo
      from mininet.net import Mininet
      
      linner4 = LinearTopo(4)
      net = Mininet(topo=linner4)
      net.start()
      net.pingAll()
      net.stop()
      
      ii. topo single,3
      from mininet.topo import SingleSwitchTopo
      from mininet.net import Mininet
      
      single3 = SingleSwitchTopo(k=3)
      net = Mininet(topo=single3)
      net.start()
      net.pingAll()
      net.stop()
      
      iii. topo tree,depth=2,fanout=2
      from mininet.topolib import TreeTopo
      from mininet.net import Mininet
      
      tree22 = TreeTopo(depth=2, fanout=2)
      net = Mininet(topo=Tree22)
      net.start()
      net.pingAll()
      net.stop()
      
      iv. 1 个交换机,2 个主机,并且赋予主机 IP 地址。
      from mininet.net import Mininet
      
      net = Mininet()
      # Creating nodes in the network
      c0 = net.addController()
      h0 = net.addHost('h0')
      s0 = net.addSwitch('s0')
      h1 = net.addHost('h1')
      # Creating links between nodes in network
      net.addLink(h0, s0)
      net.addLink(h1, s0)
      # configurate IP address in interfaces
      h0.setIP('10.0.0.1', 24)
      h1.setIP('10.0.0.1', 24)
      
      net.start()
      net.pingAll()
      net.stop()
      
    2. 编写 Python 脚本,对网络性能进行限制。
    from mininet.net import Mininet
    from mininet.node import CPULimitedHost
    from mininet.link import TCLink
    
    net = Mininet(host=CPULimitedHost, link=TCLink)
    # Creating nodes in the network
    c0 = net.addController()
    s0 = net.addSwitch('s0')
    h0 = net.addHost('h0')
    h1 = net.addHost('h1', cpu=0.5)
    h2 = net.addHost('h2', cpu=0.5)
    # Creating links between nodes in network
    net.addLink(s0, h0, bw=10, delay='5ms',max_queue_size=1000, loss=10, use_htb=True)
    net.addLink(s0, h1)
    net.addLink(s0, h2)
    
    net.start()
    net.pingAll()
    net.stop()
    
posted @ 2020-07-22 17:39  cyquen  阅读(789)  评论(0编辑  收藏  举报