目录

基本环境

官网

Mininet安装

下载项目

安装命令

使用命令

mininet图形化界面

OpenDaylight的DLUX界面


基本环境

VM14.0

Ubuntu 18.04

JDK 1.8

官网

http://mininet.org/

Mininet安装

下载项目

git clone https://github.com/mininet/mininet
SDN-Mininet安装使用_ubuntu 下载过程

安装命令

-a 默认全部安装

-b 安装benchmark:oflops

-c安装核心之后清空已有配置

-d 删除某些敏感文件

-e 安装Mininet开发依赖

-f 安装OpenFolw协议支持

-h 打印帮助信息

-i 安装indigo Virtual Switch

-k 安装新的内核

-m 从源目录安装open vSwitch内核模块

-n 安装Mininet依赖和核心文件

-p 安装pox控制器

-r 删除已存在的open vSwitch包

-s 依赖源码

-t 完成其他的虚拟机创建任务

-v 安装Open switch

-V 指定Open vSwitch的版本

-w 安装Wireashark解析器

-x 安装NOX Classic控制器

-y 安装Ryu控制器

-0 安装openflow1.0

-3 安装openflow1.3

博主直接全安装了

cd mininet/util
sudo ./install.sh -a
SDN-Mininet安装使用_ubuntu_02 安装mininet

过几分钟后出现Enjoy Mininet!就说明安装成功了!

SDN-Mininet安装使用_SDN_03 安装成功

使用命令

注意:一些翻译可能不太准确,读者敲sudo mn -h读英文原版更好。

Options:
  -h, --help                     显示帮助信息并退出
  --switch=交换机          default|ivs|lxbr|ovs|ovsbr|ovsk|user[,param=value...]
                                      ovs=OVSSwitch default=OVSSwitch ovsk=OVSSwitch
                                      lxbr=LinuxBridge user=UserSwitch ivs=IVSSwitch
                                      ovsbr=OVSBridge
  --host=主机               cfs|proc|rt[,param=value...]
                                     rt=CPULimitedHost{'sched': 'rt'} proc=Host
                                     cfs=CPULimitedHost{'sched': 'cfs'}
  --controller=控制器
                                   default|none|nox|ovsc|ref|remote|ryu[,param=value...]
                                   ovsc=OVSController none=NullController
                                   remote=远程控制器  default=DefaultController
                                   nox=NOX ryu=Ryu ref=控制器
  --link=链接               default|ovs|tc|tcu[,param=value...] default=Link
                                   ovs=OVSLink tcu=TCULink tc=TCLink
  --topo=拓扑            linear|minimal|reversed|single|torus|tree[,param=value...]

                                  linear=线性拓扑 torus=圆环拓扑 tree=树形拓扑
                                  single=单交换机拓扑
                                  reversed=单交换机反转拓扑 minimal=最小拓扑
  -c, --clean                清楚并退出
  --custom=自定义    从.py文件读取类或参数
  --test=测试             none|build|all|iperf|pingpair|iperfudp|pingall
  -x, --xterms             为每个节点生成xterm
  -i IPBASE, --ipbase=基于IP
                                   基于IP地址的主机
  --mac                         自动设置主机MAC地址
  --arp                           set all-pairs ARP entries
  -v VERBOSITY, --verbosity=信息复杂度
                                    info|warning|critical|error|debug|output
  --innamespace         sw and ctrl in namespace?
  --listenport=监听端口
                                   用于无源开关监听的基本端口
  --nolistenport            不使用被动监听端口
  --pre=提前运行         CLI 脚本在测试之前运行
  --post=之后运行       CLI 脚本在测试后运行
  --pin                         主机固定到CPU内核 (需要 --host cfs 或 --host rt)
  --nat                         [option=val...] 将NAT添加到拓扑,主机链接到物理网络
                                警告:这可能会将使用Mininet的IP子网的计算机上的所有流量路由

                                到Mininet网络中。如果您需要更改Mininet的IP子网,请参阅--ipbase选项。
  --version                打印版本并退出
  --cluster=server1,server2...
                        在多台服务器上运行 (实验!)
  --placement=block|random
                        --cluster的节点放置 (实验!)

常用命令及分类
种类 命令/参数
网络构建启动 --topo、--custom、--switch、--controller、--mac
内部交互 dump、net、nodes、links、dpctl、iperf
外部运行 -c、-h、--version
SDN-Mininet安装使用_ubuntu_04 开启mininet

 nodes命令查看所有节点

SDN-Mininet安装使用_SDN_05 nodes

net命令查看链接

SDN-Mininet安装使用_ubuntu_06 net命令

 更多命令参考Walkthrough

 知识补充——拓扑结构

单一拓扑:一个交换机,交换机链接多个主机,举例,一个交换机三个主机

sudo mn --topo=single,3

线性拓扑,交换机呈线性排列,一个交换机下一个主机,举例,三个交换机三个主机

sudo mn --topo=linear,3

 树形拓扑,树形排列,交换机层数与分支数,举例,二层的二叉树,三个交换机,四个主机

sudo mn --topo=tree,depth=2,fanout=2

自定义拓扑,自己写.py文件进行自定义,mytopo1是topo1.py文件中的类

sudo mn --custom topo1.py --topo=mytopo1

 

 

mininet图形化界面

在examples目录下,启动miniedit

SDN-Mininet安装使用_SDN_07 启动miniedit

之后会自动打开编辑页面

SDN-Mininet安装使用_SDN_08 打开的界面

构建自定义网络,创建时单击左侧图标,再单击右侧即可,连线时鼠标左键点击一个拖到另一个

SDN-Mininet安装使用_ubuntu_09 拓扑图

修改c0参数,右键点击c0,选择第二个选项修改,如果你的OpenDaylight与Mininet不在同一虚拟机里面,记得修改ip

SDN-Mininet安装使用_ubuntu_10 控制器设置

修改交换机s1、s2参数,DPID是16位

SDN-Mininet安装使用_ubuntu_11 交换机参数

修改主机h1、h2、h3参数

SDN-Mininet安装使用_ubuntu_12 修改主机参数

 

在Edit->Preferences里面有参数,可以看网段,修改openflow协议版本等等。

SDN-Mininet安装使用_ubuntu_13 标题

打开OpenDaylight,如果你没有安装控制器的话,可以看这篇文章。

SDN-Opendaylight(Nitro版本)安装使用

点击左下角Run,查看最终结果

SDN-Mininet安装使用_ubuntu_14 最终结果

OpenDaylight Dlux页面,可以看到有两个交换机,使用的是openflow协议

SDN-Mininet安装使用_ubuntu_15 Dlux界面拓扑结构

保存的是.mn文件,再次使用File->open打开即可。

保存成.py文件(File->Export Level 2 Script)时,以下步骤再次使用。

SDN-Mininet安装使用_ubuntu_16 保存成.py文件

查看.py文件

#!/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=Controller,
                      protocol='tcp',
                      port=6633)

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

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

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

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

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

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

    CLI(net)
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()

运行保存的拓扑

sudo python test.py
SDN-Mininet安装使用_SDN_17 还可以运行
OpenDaylight的DLUX界面
SDN-Mininet安装使用_ubuntu_18 pingall命令后的全部拓扑

 使用pingall命令后 ,Topology这里可以发现主机,也就能看到全部的拓扑结构了

SDN-Mininet安装使用_ubuntu_19 节点列表

点击Nodes,看到节点列表。

SDN-Mininet安装使用_ubuntu_20 详细信息

点击“NodeConnectors”号查看详细信息,如端口ID、端口名称、每个交换机的端口号、MAC地址。

SDN-Mininet安装使用_SDN_21 统计信息

 点击Statistics列中的“NodesConnectors”查看具体节点ID的节点连接器的统计信息,可以看到交换机s1有三个接口,连接h1、h2、s2。

SDN-Mininet安装使用_SDN_22 发送成功

ODL获取交换机信息的界面在YangUI中,具体节点为:Yang UI APIopendaylight-inventory-rev->operational->nodes->node{id}。点击node{id},在下方出现的path中输入Node Id(在Nodes中点击后的详细信息列表上方,本机id为openflow:1),提交方式为GET,点击Send发出消息,则交换机信息则会出现在path下方。

SDN-Mininet安装使用_ubuntu_23 交换机信息

鼠标向下滑,可以看到很多信息。

SDN-Mininet安装使用_SDN_24 xml版本

使用http://你的ip:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1 浏览器地址,在浏览器上可以看到xml版本的信息,也可使用postman等工具查看。

SDN-Mininet安装使用_SDN_25 标题

使用http://你的ip:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/opendaylight-flow-table-statistics:flow-table-statistics浏览器地址,可以看到流表的统计信息。

流表操作请查看:SDN-流表分析与增删改查

SDN相关内容,请查看:SDN-自学笔记

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。