Mininet安装与使用教程

我的安装环境:ubuntu 18.04

Mininet 安装

1. 安装git

sudo apt-get install git

 
2. 获取mininet.git

git clone http://github.com/mininet/mininet.git

 
3. 进入util文件夹(mininet文件夹默认在root文件夹下)

cd mininet/util 

 
4. 自定义安装(需要10分钟左右)

  • 默认安装全部特性
./install.sh -a
  • 自定义安装
    举例如下:此语句为安装支持OpenFlow 1.3版本协议、同时安装Open vswitch 组件的语句。
./install.sh -n3v

        其余自定义安装方式,可参照下表所示参数进行安装。

参数功能参数功能
-a默认的安装全部特性-p安装POX控制器
-b安装Benchmark:oflops-r删除已存在的Open vSwitch包
-c安装核心之后清空已有配置-s依赖源码/构建树存储位置
-d删除某些敏感文件-t完成其他Mininet虚拟机的创建任务
-e安装Mininet开发依赖-v安装Open vswitch
-f安装OpenFlow协议支持模块-V安装指定版本的Open vswitch
-h打印帮助信息-w安装Wireshark的OpenFlow解析器
-i安装Indigo Virtual Switch-y安装Ryu控制器
-k安装新的内核-x安装NOX Classic控制器
-m从源目录安装Open Switch内核模块-0(default) 安装OpenFlow 1.0版本
-n安装Mininet依赖和核心文件-3安装OpenFlow 1.3版本

 
5. 测试安装是否成功

sudo mn --test pingall

        如下图所示为安装成功

 
 

Mininet 使用教程

1. sudo mn 语句可以自动建立一个简单的拓扑网络,其结构为2个主机连接在一个交换机上。

sudo mn

 
2. 运行上述语句后进入到命令行界面,常用的命令如下表所示:

命令功能命令功能
help打印帮助信息nodes查看全部节点信息
xterm打开xterm窗口net查看网络拓扑信息
pingh1 ping h2 ,测试连通性dump输出节点信息
iperf指定节点间TCP测试iperdudp指定节点间UDP测试,可指定发送速率
py运行python语句sh执行shell脚本
host cmd在主机中执行命令,例:h1 ifconfigexit/quit退出Mininet

       以部分命令为例,具体运行结果如下图所示:

 

3. Mininet中自带多种拓扑结构,以三种常用拓扑为例。(图中s表示交换机,h表示主机)

(1)树形拓扑,后面的参数“2”表示2层交换机,“3”表示每个节点连接的下一层的节点数目。

sudo mn --topo=tree,2,3

(2)线性拓扑

sudo mn --topo=linear,5

(3)单一交换机拓扑

sudo mn --topo=single,5

 

4. Mininet中使用可视化编辑器Miniedit进行拓扑建立。
       进入到mininet/examples中,运行miniedit.py

cd mininet/examples/
sudo ./miniedit.py 

       如上图所示,出现可视化页面。可通过添加交换机,控制器,主机进行网络的建立。在相应设备上右键,可以进行配置。
       按照下图所示构建网络,并配置控制器。

       在Edit->perference页面进行配置,勾选start CLI选项,可以使得网络在运行时打开命令行,即"mininet> "页面。

       点击run,运行此网络,可以发现进入到了命令行界面。

       测试h1,h2是否连通,发现可以连通,网络建立成功。

       进入 File -> Export Level 2 Script可以将生成的网络拓扑保存为python文件,在之后想要使用此拓扑时,可以选择直接运行对应python文件,即“sudo python 文件名.py” 或者“sudo ./文件名.py”。

 

5. 使用python语言构建拓扑
       可以通过miniedit.py将构建的拓扑导出为python文件,观察example文件中已有的python例子和miniedit导出的文件,其实也可以自己编写python文件构建拓扑。

       以下为一个用python语言编写的可以运行的拓扑网络。

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call

def myNetwork():

    net = Mininet( topo=None,
                   build=False,
                   ipBase='10.0.0.0/8')

    info( '*** Adding controller\n' )
    c0=net.addController(name='c0',
                      controller=OVSController,
                      ip='127.0.0.1',
                      protocol='tcp',
                      port=6633)

    info( '*** Add switches\n')
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch, dpid='0000000000000001')

    info( '*** Add hosts\n')
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)

    info( '*** Add links\n')
    net.addLink(h1, s1)
    net.addLink(h2, s1)

    info( '*** Starting network\n')
    net.start()
    info( '*** Starting controllers\n')
    #for controller in net.controllers:
    c0.start()

    info( '*** Starting switches\n')
    net.get('s1').start([c0])

    info( '*** Post configure switches and hosts\n')
    CLI(net)

if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()
Mininet是一个轻量级的网络模拟器,它允许开发者在一个Python环境中快速构建和测试网络协议、路由算法等。以下是简要的安装步骤和使用方法: **安装Mininet**: 1. **安装依赖**:首先确保你的系统已经安装了Python和pip(Python包管理工具)。对于Ubuntu/Debian用户,可以运行`sudo apt-get install python-pip`。 2. **安装Mininet**:打开终端,输入`pip install mininet`,这会自动下载并安装最新版本的Mininet及其相关库。 **使用Mininet**: 1. **启动虚拟网络**:在Python shell中导入mininet模块,然后创建一个新的网络环境,如`net = Mininet()`。 2. **添加设备**:你可以创建交换机(Switch)、主机(Host)或者其他网络设备,并将它们添加到网络中。 3. **配置连接**:使用`addLink()`方法连接设备,定义拓扑结构。例如,`host1 –> s1`表示从主机1到交换机1有连线。 4. **启动网络**:调用`start()`方法启动所有设备和服务,如`net.start()`。 5. **执行测试**:在这个环境下测试你的网络应用或协议,比如设置IP地址、运行ping命令等。 6. **清理资源**:测试完毕后,记得关闭网络和释放资源,使用`stop()`方法。 **示例代码片段**: ```python from mininet.topo import Topo from mininet.net import Mininet from mininet.node import OVSKernelSwitch class MyTopo(Topo): def __init__(self): Topo.__init__(self) h1 = self.addHost('h1') s1 = self.addSwitch('s1', cls=OVSKernelSwitch) self.addLink(h1, s1) topo = MyTopo() net = Mininet(topo=topo) net.start() # 启动网络 h1.cmd('ifconfig h1 10.0.0.1') # 设置主机IP h1.cmd('ping -c 4 10.0.0.2') # 发送ping请求 net.stop() # 关闭网络 ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值