什么是Mininet

Mininet是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。

Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数 据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。

Mininet的特性

可以简单、迅速地创建一个支持用户自定义的网络拓扑,缩短开发测试周期

可以运行真实的程序,在Linux上运行的程序基本上可以都可以在Mininet上运行,如Wireshark

Mininet支持Openflow,在Mininet上运行的代码可以轻松移植到支持OpenFlow的硬件设备上

Mininet可以在自己的电脑,或服务器,或虚拟机,或者云(例如Amazon EC2)上运行

Mininet提供python API,简单易用

Mininet 是一个开源项目,简单好用成本低,代码托管在github上:

https://github.com/mininet/mininet

目前有三种方式使用mininet

  • Easiest "installation" - use our pre-built VM image!
  • Next-easiest option: use our Ubuntu package!
  • Native installation from source

三种方式都比较方便,以下第三种方式举例(第三种貌似最复杂)

1.从Github上获取mininet源码

  1. git clone git://github.com/mininet/mininet #这里需要提前安装git,ubuntu环境下还需要+sudo

2.安装获得源码可以选择mininet的版本,最新或者稳定都可以(目前最新的已经是2.3.0d1版本)

  1. xxt@xxt-VirtualBox:~$ cd mininet/
  2. xxt@xxt-VirtualBox:~/mininet$ git tag
  3. 1.0.
  4. 2.0.
  5. 2.1.
  6. 2.1.0p1
  7. 2.1.0p2
  8. 2.2.
  9. 2.2.0b0
  10. 2.2.0b1
  11. 2.2.0b2
  12. 2.2.0b3
  13. 2.2.0rc1
  14. 2.2.0rc2
  15. 2.2.
  16. 2.2.1d2
  17. 2.2.1rc1
  18. cs244-spring--final
  19. xxt@xxt-VirtualBox:~/mininet$

选择你所需要的版本

  1. git checkout <release tag> #这里的release tag就是你想选取的版本

此时就可以开始安装了

  1. mininet/util/install.sh [options]
  2. -a: 全部安装
  3. -nfv:仅安装MINIENT OPENFLOW引用多SWITCH OPEN VSWITCH
  4. -s mydir: 指定目录

3.测试

如果上面的步骤没有报错,那就可以试一下mininet了

  1. xxt@xxt-VirtualBox:~/mininet$ sudo mn
  2. [sudo] password for xxt:
  3. *** Creating network
  4. *** Adding controller
  5. *** Adding hosts:
  6. h1 h2
  7. *** Adding switches:
  8. s1
  9. *** Adding links:
  10. (h1, s1) (h2, s1)
  11. *** Configuring hosts
  12. h1 h2
  13. *** Starting controller
  14. c0
  15. *** Starting switches
  16. s1 ...
  17. *** Starting CLI:
  18. mininet>

这是一个最简单的拓扑,包括两个host和一个switch

然后可以互相ping一下

  1. mininet> pingall
  2. *** Ping: testing ping reachability
  3. h1 -> h2
  4. h2 -> h1
  5. *** Results: % dropped (/ received)
    mininet>

可以通过help命令了解其他功能

  1. mininet> help
  2.  
  3. Documented commands (type help <topic>):
  4. ========================================
  5. EOF gterm iperfudp nodes pingpair py switch
  6. dpctl help link noecho pingpairfull quit time
  7. dump intfs links pingall ports sh x
  8. exit iperf net pingallfull px source xterm
  9.  
  10. You may also send a command to a node using:
  11. <node> command {args}
  12. For example:
  13. mininet> h1 ifconfig
  14.  
  15. The interpreter automatically substitutes IP addresses
  16. for node names when a node is the first arg, so commands
  17. like
  18. mininet> h2 ping h3
  19. should work.
  20.  
  21. Some character-oriented interactive commands require
  22. noecho:
  23. mininet> noecho h2 vi foo.py
  24. However, starting up an xterm/gterm is generally better:
  25. mininet> xterm h2
  26.  
  27. mininet>

这里可以看到有许多功能都集成在mininet中,可以试几个

比如查看节点(nodes)

  1. mininet> nodes
  2. available nodes are:
  3. c0 h1 h2 s1
  4. mininet>

可以看到当前的拓扑里有四个节点,包括两个host,一个switch,还有一个控制器c0

查看连接情况(net)

  1. mininet> net
  2. h1 h1-eth0:s1-eth1
  3. h2 h2-eth0:s1-eth2
  4. s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0
  5. c0
  6. mininet>

可以看到h1的port0和s1的port1连接,h2的port0和s2的port2连接

dump(这不知道怎么翻译,好多语言里都有这个方法。。。)

  1. mininet> dump
  2. <Host h1: h1-eth0:10.0.0.1 pid=>
  3. <Host h2: h2-eth0:10.0.0.2 pid=>
  4. <OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=>
  5. <Controller c0: 127.0.0.1: pid=>
  6. mininet>

可以看到h1-eth0的ip是10.0.0.1 ,h2-eth0的ip是10.0.0.2 , s1的ip是127.0.0.1(本地)

还有一些集成在mininet里的工具,例如有名的网络性能测试工具iperf

  1. mininet> iperfudp
  2. *** Iperf: testing UDP bandwidth between h1 and h2
  3. *** Results: ['10M', '9.98 Mbits/sec', '9.98 Mbits/sec'] #这里结果分别是上行带宽和下行带宽 ,  前面的那个10M是什么就不太清楚了
  4. mininet> iperf
  5. *** Iperf: testing TCP bandwidth between h1 and h2
  6. *** Results: ['17.6 Gbits/sec', '17.6 Gbits/sec']         #上行带宽和下行带宽
  7. mininet>

退出 (quit 或 exit)

  1. mininet> quit
  2. *** Stopping controllers
  3. c0
  4. *** Stopping links
  5. ..
  6. *** Stopping switches
  7. s1
  8. *** Stopping hosts
  9. h1 h2
  10. *** Done
  11. completed in 1119.156 seconds
  12. xxt@xxt-VirtualBox:~/mininet$

功能很多,这里就不一一赘述了,如有不对的地方,欢迎批评指出。。

Mininet介绍及安装的更多相关文章

  1. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

  2. 从零自学Hadoop(14):Hive介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...

  3. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  4. Bash on Windows 抢鲜测试 -- 介绍及安装

    前言 微软在上周的Windows BUILD大会上宣布,WIN10将引入原生Bash,并将很快在技术预览版中推出. 如此一来,windows的命令行工具就不再只有cmd和powershell了,我们可 ...

  5. Tyk API网关介绍及安装说明

    Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...

  6. Python介绍、安装、使用

    Python介绍.安装.使用 搬运工:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python语言介绍 说到Python语言,就不得不说一下它的创始人Guido van Rossu ...

  7. Redis介绍以及安装(Linux)

    Redis介绍以及安装(Linux) redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的 ...

  8. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

  9. 【兄弟连ThinkPHP】1、介绍和安装

    琢磨了好几天的ThinkPHP了,兄弟连的视频真心不错,下面是记得一些要点,只做备忘,有兴趣的朋友请去百度兄弟连. ## ThinkPHP 3 介绍及安装#讲师:赵桐正微博:http://weibo. ...

随机推荐

  1. 二·、spring成长之路——委派设计模式和单例设计模式

    3.委派设计模式 设计思想:就是多个类去完成一项的工作,其中一个类去分发任务,其他类做具体的任务,而具体表现是这个委派类的工作,具体过程是被委派类来操作的 [ITask.java]定义工作的统一标准 ...

  2. Delphi Firemonkey在主线程 异步调用函数(延迟调用)

    先看下面的FMX.Layouts.pas中一段代码 procedure TCustomScrollBox.MouseDown(Button: TMouseButton; Shift: TShiftSt ...

  3. 第一篇随笔, 正在做 ESP32 , STM32 , 树莓派 RaspberryPi 的创客工具

    先随便写写一些思路, 以后再整理. 这段时间笔者做了一些硬件开发, 领悟了一些事情. 1 - 在常规创客的角度上, 硬件开发所需的知识面比较广, 非常广, 但不算太深. 2 - 发现硬件开发由于其特殊 ...

  4. celery知多少

    Celery 1.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成 ...

  5. kubernetes命令式容器应用编排/部署应用/探查应用详情/部署service对象/扩缩容/修改删除对象

    部署Pod应用 创建delpoyment控制器对象 [root@master ~]# kubectl run myapp --image=ikubernetes/myapp:v1 --port=80 ...

  6. 使用jenkins中遇到的问题汇总/持续更新

    jenkins产生大量日志文件 question: [DNSQuestion@1446063419 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN in ...

  7. MySQL存取特殊数据类型

    一.存取大文本数据 数据库设计: DDL: CREATE TABLE `article` ( `id` ) COLLATE utf8_bin NOT NULL COMMENT '编号', `conte ...

  8. 20155317 《Java程序设计》0510上课考试博客

    20155317 <Java程序设计>0510上课考试博客 二.Arrays和String单元测试 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常, ...

  9. 20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA)

    20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序 ...

  10. 20155327 信息安全技术 实验二 Windows口令破解

    课程:信息安全概论 班级:1553 姓名:了李百乾 学号:20155327 成绩: 指导教师: 李冬冬 实验日期及时间: 2017年10月11日 15:30-18:00 必修/选修:必修 实验序号:0 ...