什么是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源码

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

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

xxt@xxt-VirtualBox:~$ cd mininet/
xxt@xxt-VirtualBox:~/mininet$ git tag
1.0.
2.0.
2.1.
2.1.0p1
2.1.0p2
2.2.
2.2.0b0
2.2.0b1
2.2.0b2
2.2.0b3
2.2.0rc1
2.2.0rc2
2.2.
2.2.1d2
2.2.1rc1
cs244-spring--final
xxt@xxt-VirtualBox:~/mininet$

选择你所需要的版本

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

此时就可以开始安装了

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

3.测试

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

xxt@xxt-VirtualBox:~/mininet$ sudo mn
[sudo] password for xxt:
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
c0
*** Starting switches
s1 ...
*** Starting CLI:
mininet>

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

然后可以互相ping一下

mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: % dropped (/ received)
mininet>

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

mininet> help

Documented commands (type help <topic>):
========================================
EOF gterm iperfudp nodes pingpair py switch
dpctl help link noecho pingpairfull quit time
dump intfs links pingall ports sh x
exit iperf net pingallfull px source xterm You may also send a command to a node using:
<node> command {args}
For example:
mininet> h1 ifconfig The interpreter automatically substitutes IP addresses
for node names when a node is the first arg, so commands
like
mininet> h2 ping h3
should work. Some character-oriented interactive commands require
noecho:
mininet> noecho h2 vi foo.py
However, starting up an xterm/gterm is generally better:
mininet> xterm h2 mininet>

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

比如查看节点(nodes)

mininet> nodes
available nodes are:
c0 h1 h2 s1
mininet>

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

查看连接情况(net)

mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0
c0
mininet>

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

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

mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=>
<Host h2: h2-eth0:10.0.0.2 pid=>
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=>
<Controller c0: 127.0.0.1: pid=>
mininet>

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

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

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

退出 (quit 或 exit)

mininet> quit
*** Stopping controllers
c0
*** Stopping links
..
*** Stopping switches
s1
*** Stopping hosts
h1 h2
*** Done
completed in 1119.156 seconds
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. JQ+css3 导航栏到底部上移

    导航栏 .navigation { position: fixed; bottom: 100px; right: 100px; z-index:; } .navigation { transition ...

  2. jquery实现复选框的全选、全不选、反选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 大数据时代的结构化存储--HBase

    迄今,相信大家肯定听说过 HBase,但是对于 HBase 的了解可能仅仅是它是 Hadoop 生态圈重要的一员,是一个大数据相关的数据库技术. 今天我带你们一起领略一下 HBase 体系架构,看看它 ...

  4. 【Spark】编程实战之模拟SparkRPC原理实现自定义RPC

    1. 什么是RPC RPC(Remote Procedure Call)远程过程调用.在Hadoop和Spark中都使用了PRC,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的 ...

  5. ruby安装devkit

    双击下载文件,指定解压路径,路径中不能有空格.如C:\DevKit,这个路径就是<DEVKIT_INSTALL_DIR>. > cd <DEVKIT_INSTALL_DIR&g ...

  6. Vivado 调用自定义IP核

    关于Vivado如何创建自定义IP核有大量的参考文章,这里就不多加阐述了,本文目的主要是解决如何在新建工程中引用其它工程已经自定义封装好的IP核,从而实现自定义IP核的灵活复用. 举个例子,我们的目标 ...

  7. 93. Balanced Binary Tree [easy]

    Description Given a binary tree, determine if it is height-balanced. For this problem, a height-bala ...

  8. Windows10下ghci无法使用的解决方案之一

    遇到的问题:在安装Haskell Platform Core 8.4.3版本后,在命令行中输入ghci,使用该交互环境时报错. 报错信息如下:省略号是一系列类似ghci去各种路径查找都没找到的信息 G ...

  9. ZooKeeper典型使用场景一览

    场景类别 典型场景描述(ZK特性,使用方法) 应用中的具体使用 数据发布与订阅 发布与订阅即所谓的配置管理,顾名思义就是将数据发布到zk节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新 ...

  10. 20155234 《Java程序设计》实验四 (Android程序设计)实验报告

    实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组件.布局管理器的使用: 掌握Android中事件处理机制. 实验步骤 (一)Android S ...