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上:
⽬前有三种⽅式使⽤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/mininet/mininet    #这⾥需要提前安装git,ubuntu环境下还需要+sudo
2.安装获得源码可以选择mininet的版本,最新或者稳定都可以(⽬前最新的已经是2.
3.0d1版本)
xxt@xxt-VirtualBox:~$ cd mininet/
xxt@xxt-VirtualBox:~/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
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 1 switches
s1 ...
*** Starting CLI:
mininet>
这是⼀个最简单的拓扑,包括两个host和⼀个switch
然后可以互相ping⼀下
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 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:
documented 翻译
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=2531>
<Host h2: h2-eth0:10.0.0.2 pid=2533>
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=2538>
<Controller c0: 127.0.0.1:6633 pid=2524>
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 1 controllers
c0
*** Stopping 2 links
..
*** Stopping 1 switches
s1
*** Stopping 2 hosts
h1 h2
*** Done
completed in1119.156 seconds
xxt@xxt-VirtualBox:~/mininet$
功能很多,这⾥就不⼀⼀赘述了,如有不对的地⽅,欢迎批评指出。。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。