Mininet简介、安装与调试

目录

 

Mininet简介

什么是Mininet

Mininet的特性

安装

三种安装方法

源码安装

测试与简单使用


Mininet简介

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

安装

三种安装方法

有三种安装方法:

1 Mininet的VM安装:Easiest "installation" - use our pre-built VM image!

2 文件包安装:Next-easiest option: use our Ubuntu package!

3 源码安装:Native installation from source

有一说一三种方法都很方便,由于熟悉源码安装我选择相对最复杂的第三种

源码安装

1.从Github上获取mininet源码

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

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

:~$ cd mininet/
:~/mininet$ git tag
1.0.0
2.0.0
2.1.0
2.1.0p1
2.1.0p2
2.2.0
2.2.0b0
2.2.0b1
2.2.0b2
2.2.0b3
2.2.0rc1
2.2.0rc2
2.2.1
2.2.1d2
2.2.1rc1
cs244-spring-2012-final

3.选择你需要的版本

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

4.此时就可以开始安装了

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

安装成功后,会有这样的界面:

测试与简单使用

1.启动Mininet

ly@ly-System-Product-Name:~$ sudo mn

2.执行上述命令后,会创建默认的一个小型测试网络

经过短暂时间的等待即可进入以“mininet>”引导的命令行界面。默认拓扑创建成功,即拥有一个一台控制器(Controller)/一台交换机(Switch)和两台主机(Host)的网络。

*** 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 1 switches
s1 ...
*** Starting CLI:
mininet> 

3.使用help命令查看所有可用的CLI命令

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> 
常用CLI命令列表
 常用CLI命令功能
1dump打印节点信息
2gtermgterm给定节点上开启gnome-terminal
3xterm给定节点上开启Xterm
4intfs列出所有的网络接口
5iperf两个节点之间进行简单的iperfTCP测试
6iperfudp两个节点之间使用UDP进行带宽测试
7net显示网络连接情况
8noecho运行交互式窗口,关闭回应(Echoing)
9pingair在前两个主机之间互ping测试
10source从外部文件中读入命令
11dpctl在所有交换机上用dptcl执行相关命令
12link禁用或启用两个节点之间的链路
13nodes列出所有的节点信息
14pingall所有Host节点之间互ping
15py执行Python表达式
16sh运行外部shell命令
17quit/exit退出
   

4.互相ping以下

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

5.查看节点(nodes)

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

6.查看连接情况

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

7.打印节点信息

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

8.网络性能测试工具

mininet> iperfudp
*** Iperf: testing UDP bandwidth between h1 and h2 
*** Results: ['10M', '9.81 Mbits/sec', '9.81 Mbits/sec']
mininet> iperf
*** Iperf: testing TCP bandwidth between h1 and h2 
*** Results: ['75.3 Gbits/sec', '75.3 Gbits/sec']
mininet> 

9.输出仿真主机信息

mininet> h1 ifconfig
h1-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.1  netmask 255.0.0.0  broadcast 10.255.255.255
        inet6 fe80::18b4:4fff:fe44:d55  prefixlen 64  scopeid 0x20<link>
        ether 1a:b4:4f:44:0d:55  txqueuelen 1000  (以太网)
        RX packets 1075867  bytes 71013041 (71.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1081880  bytes 47154069528 (47.1 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (本地环回)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

mininet> 

10.节点连通试验

mininet> h2 ping -c 3 h1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=3.13 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.88 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.148 ms

--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.148/1.721/3.131/1.223 ms
mininet> 

11.调出终端

mininet>  xterm h1 h2
mininet> 

就可以在节点终端上各种操作啦

12.退出

mininet> exit
*** Stopping 1 controllers
c0 
*** Stopping 4 terms
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 2402.987 seconds
ly@ly-System-Product-Name:~$ 

13.可视化操作

cd mininet/mininet/examples
./miniedit.py

 

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

馋鱼夜炖桃

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值