欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mininet简介、安装与调试

程序员文章站 2022-07-06 20:28:30
...

目录

 

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: 指定目录

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

Mininet简介、安装与调试

测试与简单使用

1.启动Mininet

aaa@qq.com:~$ 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> 

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

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
aaa@qq.com:~$ 

 

相关标签: SDN Mininet