zoukankan      html  css  js  c++  java
  • 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

    目前有三种方式使用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.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: 
    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 in 1119.156 seconds
    xxt@xxt-VirtualBox:~/mininet$ 

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

  • 相关阅读:
    mac下通过复制启动两个tomcat
    搭建一个redis集群
    ubantu系统下永久修改主机名
    民宿项目知识_截取最后一个逗号
    民宿项目知识_string判断是否为空
    民宿项目知识_enum
    民宿项目中的知识点_动态删除tr
    笔记:迁移来自xinlang的笔记
    SVN使用笔记
    iOS性能优化笔记
  • 原文地址:https://www.cnblogs.com/xiaoxt/p/5499078.html
Copyright © 2011-2022 走看看