教学目的与学时建议

  1. 能够运用 mininet 可视化工具创建计算机网络拓扑结构
  2. 能够运用 mininet 交互界面创建拓扑结构
  3. 能够运用 python 脚本构建计算机网络拓扑结构
  4. 建议:2 学时

实验环境

  1. 下载并安装虚拟机 VMware workstation;
  2. 下载虚拟机镜像( SDNHub_tutorial_VM_64-bit[NEW](可直接导入 VMware).ova ),百度网盘下载链接 提取码:mhfi
  3. 因为虚拟机镜像是ova格式,所以只需要打开即可使用,无需创建新的虚拟机。
  4. 还有使用命令行、安装包的方式来安装,参考文章

技术与知识背景

1,什么是 Mininet?

  1. Mininet 是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,是一个轻量级软件定义网络和测试平台;它采用轻量级的虚拟化技术使一个单一的系统看起来像一个完整的网络运行想过的内核系统和用户代码,也可简单理解为 SDN 网络。
  2. 系统中的一种基于进程虚拟化平台,它支持 OpenFlow、OpenvSwith 等各种协议,Mininet 也可以模拟一个完整的网络主机、链接和交换机在同一台计算机上且有助于互动开发、测试和演示,尤其是那些使用 OpenFlow 和 SDN 技术;同时也可将此进程虚拟化的平台下代码迁移到真实的环境中。
  3. Mininet 可以很方便地创建一个支持 SDN 的网络:host 就像真实的电脑一样工作,可以使用 ssh 登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。

 2,Mininet 的特性:

  1. 可以简单、迅速地创建一个支持用户自定义的网络拓扑,缩短开发测试周期
  2. 可以运行真实的程序,在 Linux 上运行的程序基本上可以都可以在 Mininet 上运行,如 Wireshark
  3. Mininet 支持 Openflow,在 Mininet 上运行的代码可以轻松移植到支持OpenFlow 的硬件设备上
  4. Mininet 可以在自己的电脑,或服务器,或虚拟机,或者云(例如 Amazon EC2)上运行
  5. Mininet 提供 python API,简单易用
  6. Mininet 是开源项目

3,Mininet 部分命令

4,命令操作

  • 终端输入mn,可以创建一个简单的网络,创建完成之后,命令行变为mininet>
  • Mininet>iperf <node id> <node id>—两个节点之间的网络性能测试

  • Mininet><node id> route—类似于Linux命令,用于定义节点路由表中的条目

  • Mininet>help

  • Mininet>nodes

  • Mininet>net

​​​​​​​

  • Mininet>pingall

​​​​​​​

  • Mininet>dump

​​​​​​​

  • Mininet>h1 ping h2

​​​​​​​

  • Mininet>h2 ifconfig

​​​​​​​

  • Mininet>xterm h1

​​​​​​​

  • Mininet>exit

​​​​​​​

  • 更多操作命令

测试Mininet是否正常工作

  • 要快速检查它是否工作,请键入以下命令:
  • 此命令将:
  • 创建一个单一网络,其中3台主机以非交互模式连接到单个交换机。
  • 执行从所有主机到所有其他主机的ping。
  • 此命令使用默认的交换机与控制器。
 sudo mn --test pingall --topo single,3
  • ​​​​​​​​​​​​​​​​​​命令讲解

​​​​​​​

创建拓扑

  • 运用mininet可视化工具创建网络拓扑结构
  • 运用mininet命令行工具创建网络拓扑结构
  • 运用mininet交互界面创建网络拓扑结构
  • 运用python脚本构建网络拓扑结构
  • 参考博客

基本命令行参数 ——后面会用得到

  1. --topo—在mininet启动时通过命令行定义拓扑
  2. --switch—定义要使用的交换机。默认情况下,使用ovsk软件交换机
  3. --controller—定义要使用的控制器。如果未指定默认控制器,作为集线器使用

可视化工具创建拓扑

  • 导入镜像后,默认处在/home/ubuntu的位置,可以使用pwd来查看当前的路径,动态调整。进入/home/ubuntu/mininet/examples文件夹,使用命令cd
  • 使用命令sudo su,切换到root身份,执行python miniedit.py启动可视化界面
  • 按照下面的操作步骤和页面布局进行操作

  • 右键点击图标,选中preferences,对网络拓扑结构进行相关配置,此处使用默认配置,即不进行任何操作。
  •  “Edit”→“Preferences”,勾选 strat CLI(允许通过交互界面对拓扑结构进行调整),选择所支持 Openflow 协议版本。

  • 保存为 python 文件,选择“File”→“Export Level 2 Script”,起一个名字,在终端运行保存下来的 python 文件即可。
  • 或者点击左下角的run运行,如果需要停止,则点击stop即可。

命令行创建拓扑

  • 最小网络,两台主机连接到一台交换机。
  • sudo mn –topo minimal

  • 每个主机都连接到一个交换机,所有交换机都彼此连接。
  • 在本例中,有4个主机和4个交换机。
  • sudo mn --topo linear,4

  • 下图纯属虚构,请以实物为准

  • 每个主机都连接到一个交换机。
  • 在本例中,有3个主机和1个交换机。
  • sudo mn --topo single,3

  • 下图纯属虚构,请以实物为准

  • 具有定义深度和扇出的基于树的拓扑。
  • sudo mn --topo tree,depth=2,fanout=2

  • 下图纯属虚构,请以实物为准

交互式创建拓扑

启动参数总结

  • -h, --help        show this help message and exit
  • --switch=SWITCH        [kernel user ovsk]
  • --host=HOST        [process]
  • --controller=CONTROLLER        [nox_dump none ref remote nox_pysw]
  • --topo=TOPO        [tree reversed single linear minimal],arg1,arg2,...argN
  • -c, --clean         clean and exit
  • --custom=CUSTOM        read custom topo and node params from .py file
  • --test=TEST        [cli build pingall pingpair iperf all iperfudp none]
  • -x, --xterms        spawn xterms for each node
  • --mac        set MACs equal to DPIDs
  • --arp        set all-pairs ARP entries
  • -v VERBOSITY, --verbosity=VERBOSITY        [info warning critical error debug output]
  • --ip=IP        [ip address as a dotted decimal string for aremote controller]
  • --port=PORT        [port integer for a listening remote controller]
  • --innamespace        sw and ctrl in namespace?
  • --listenport=LISTENPORT        [base port for passive switch listening controller]
  • --nolistenport        don't use passive listening port
  • --pre=PRE        [CLI script to run before tests]
  • --post=POST          [CLI script to run after tests]

python 脚本定义拓扑

  • 用 python 脚本创建与上述对应拓扑,创建完后的文件需要增加可执行权限chmod +x test.py,还是用sudo python test.py执行。
  • --topo linear,4
  • 操作:

  1. 新建名字为linear的python文件 touch linear.py
  2. 赋予权限 chmod +x linear.py
  3. 对文件进行写入操作 vi linear.py
  4. 将下文的代码复制黏贴到linear.py文件中,先按下i,进行输入操作;鼠标右键,选择黏贴代码;按下Esc按键,同时按下shift和:按键,然后输入wq保存代码;*代码里面不可以包含中文,否则会报错,也可以添加# -*- coding: utf8 -*-改变编码格式,解决代码包含中文的问题
  5. 运行代码 sudo python linear.py
  6. 查看输出
  • 代码

from mininet.net import Mininet
from mininet.topo import LinearTopo
Linear4 = LinearTopo(k=4)
net = Mininet(topo=Linear4)
net.start()
net.pingAll()
net.stop()
  • 实践

  • --topo single,3
  • 操作:
  1. 新建名字为single的python文件 touch single.py
  2. 赋予权限 chmod +x single.py
  3. 对文件进行写入操作 vi single.py
  4. 将下文的代码复制黏贴到single.py文件中,先按下i,进行输入操作;鼠标右键,选择黏贴代码;按下Esc按键,同时按下shift和:按键,然后输入wq保存代码;
  5. 运行代码 sudo python single.py
  6. 查看输出
  • 代码:
from mininet.net import Mininet
from mininet.topo import SingleSwitchTopo
Single3 = SingleSwitchTopo(k=3)
net = Mininet(topo=Single3)
net.start()
net.pingAll()
net.stop()
  • 实践

  • --topo tree,depth=2,fanout=2
  • 操作:
  1. 新建名字为tree的python文件 touch tree.py
  2. 赋予权限 chmod +x tree.py
  3. 对文件进行写入操作 vi tree.py
  4. 将下文的代码复制黏贴到tree.py文件中,先按下i,进行输入操作;鼠标右键,选择黏贴代码;按下Esc按键,同时按下shift和:按键,然后输入wq保存代码;
  5. 运行代码 sudo python tree.py
  6. 查看输出
  • 代码:
from mininet.net import Mininet
from mininet.topolib import TreeTopo
Tree22 = TreeTopo(depth=2,fanout=2)
net = Mininet(topo=Tree22)
net.start()
net.pingAll()
net.stop()
  • 实践

  • 对于性能的限制
  • 操作:
  1. 新建名字为test的python文件 touch test.py
  2. 赋予权限 chmod +x test.py
  3. 对文件进行写入操作 vi test.py
  4. 将下文的代码复制黏贴到test.py文件中,先按下i,进行输入操作;鼠标右键,选择黏贴代码;按下Esc按键,同时按下shift和:按键,然后输入wq保存代码;
  5. 运行代码 sudo python test.py
  6. 查看输出
  • 讲解:

除了可以通过Python脚本创建基本的拓扑以外,还能在此基础上对性能进行限制。观察下面给出的脚本文件,addHost()语法可以对主机cpu进行设置,以百分数的形式;addLink()语法可以设置带宽bw、延迟delay、最大队列的大小max_queue_size、损耗率loss。

  • 代码:
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
net = Mininet(host=CPULimitedHost, link=TCLink)
c0 = net.addController()
s0 = net.addSwitch('s0')
h0 = net.addHost('h0')
h1 = net.addHost('h1', cpu=0.5)
h2 = net.addHost('h1', cpu=0.5)
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()
  • 实践

​​​​​​​​​​​​​​

mininet 应用实践相关推荐

  1. mininet应用实践

    实验一.Mininet应用实践 实验环境设置 方法一: 下载并安装虚拟机 VMware workstation: 打开虚拟机镜像( SDNHub_tutorial_VM_64-bit[NEW](可直接 ...

  2. 《虚拟化和云计算》实验报告——MININET实践SDN

    MiniNet 由一些虚拟的终端节点(end-hosts).交换机.路由器连接而成的一个网络仿真器,支持0penflow协议,可以用它来实践SDN. MiniNet安装 源码安装 git clone ...

  3. mininet编程实现交换机规则的插入、删除与修改。_可编程网卡芯片在滴滴云网络的应用实践...

    桔妹导读:随着云规模不断扩大以及业务层面对延迟.带宽的要求越来越高,采用DPDK 加速网络报文处理的方式在横向纵向扩展都出现了局限性.可编程芯片成为业界热点.本文主要讲述了可编程网卡芯片在滴滴云网络中 ...

  4. 第五章 Mininet常用命令参数介绍

    mn 观察,可以知道,已经进入了这个自带的网络,网络中有1个交换机和2个主机,且在打开这个网络之后,进入了  mininet>  这个命令模式 然后输入相关命令查看网络状态,如下图所示: 查看可 ...

  5. P4语言编程快速开始 实践二

    参考:P4语言编程快速开始 上一篇系列博客:P4语言编程快速开始 实践二 Demo 2 本Demo所做的修改及实现的功能: 为simple_router添加一个计数器(counter),该计数器附加( ...

  6. 深入探讨SDN拓扑发现机制:新的攻击及实践对策【SDN拓扑】(下)

    An In-depth Look Into SDN Topology Discovery Mechanisms: Novel Attacks and PracticalCountermeasures ...

  7. 密码学原理与实践第三版pdf_云计算原理与实践PDF电子书下载

    今天分享的电子书是<云计算原理与实践>PDF电子书下载 本书细节 书名:<云计算原理与实践> 作者:王伟主编:郭栋,张礼庆,邱娟,张静轩,张东启,谭一鸣编著 出版时间:2018 ...

  8. [SDN]使用mininet搭建单臂路由的VLAN网络

    ✌️作者:清水寺丞 ☀️简介:正在学习unity,数据库,计算机通信网络和python.喜欢部署各种奇奇怪怪的小项目.喜欢就点个关注一起学习吧~⛄️⛄️⛄️⛄️ 前言: 本文实践了使用mininet来 ...

  9. SDN 与 Mininet 概述

    SDN 全名为(Software Defined Network)即软件定义网络,是现互联网中一种新型的网络创新架构,其核心技术 OpenFlow 通过网络设备控制面与数据面分离开来,从而实现网络流量 ...

最新文章

  1. ArcEngine的拓扑分析之ITopologicalOperator
  2. ASP处理多关键词查询实例代码
  3. Lync Server 2010的部署系列_第六章 安装配置拓扑生成器、前端Server、前端池
  4. 未来已来!医院数字化转型为“看病难”画上“休止符”
  5. Spring Boot : Spring Boot Slf4j 以及 log4j 以及门面日志
  6. 用汇编的眼光看C++(之class构造、析构)
  7. sqlite3 可视化工具 linux,【SQLite3下载】SQLite3可视化工具 v3 3.27.2 官方版-开心电玩...
  8. php opcache文件还原,php7使用opcache把编译后的php文件存储为文件,实现php源码保护和脚本加速...
  9. python函数定义及调用-python函数基础(函数的定义和调用)
  10. java-第三章-从键盘输入3个整数,然后将输入的整数按照从小到大的顺序放在abc,并输出3个变量的值...
  11. 计算机网络阶段,计算机网络发展的四个阶段
  12. win服务器系统设置休眠时间,win7系统电脑设置休眠时间的操作方法
  13. javascript数字转汉字中文数字
  14. Matlab小课堂1
  15. 记一次zookeeper连接慢的问题和解决方法
  16. flash 批量编译发布fla 文件
  17. HDU 5454 Excited Database【线段树】
  18. 计算机网络思科平台第五章测验答案
  19. 教你制作服务器中更高效率的刷怪塔,我的世界低耗材高效率凋零骷髅刷怪塔制作攻略...
  20. 【我们为什么用高斯机制?】差分隐私代码实现系列(七)

热门文章

  1. java 类型转换_java中的基本数据类型的转换
  2. 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
  3. c# 自定义应用程序配置文件(app.config)
  4. a.pop啥意思python_python中pop什么意思
  5. 【Python CheckiO 题解】Date and Time Converter
  6. 【HDU - 1937 】Finding Seats(二维前缀和+尺取法)
  7. 【HDU - 5977】Garden of Eden(树分治)
  8. 【洛谷 - P1231 】教辅的组成(网络流最大流,拆点)
  9. 【EOJ Monthly 2019.02 - A】回收卫星(交互题型,二分)
  10. 【HDU - 1251 】统计难题(字典树,求拥有公共前缀的字符串数量)