mininet应用实践

实验一、Mininet应用实践

    1. 实验环境设置

方法一:

  1. 下载并安装虚拟机 VMware workstation;
  2. 打开虚拟机镜像( SDNHub_tutorial_VM_64-bit[NEW](可直接导入 VMware).ova ),下载链接:https://pan.baidu.com/s/1qYN_MtUboPmruHda1DgrTA 提取码:mhfi。

方法二:

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

准备一个Ubuntu虚拟机;

  1. 然后从mininet官网上下载安装源码;
  2. 下面进行安装:
  3. 直接安装所有组件

cd mininet

git tag  # list available versions

git checkout -b mininet-2.3.0 2.3.0  # or whatever version you wish to install

cd ..

mininet/util/install.sh -a

  1. 安装成功
    1. 实验步骤

………这里可以各种截屏

  1. 用可视化工具 miniedit 创建一个网络拓扑,进行相应配置后,保存为 python 脚本,

运行 python 脚本重现拓扑;

1) 获取超级用户权限后,进入到 mininet/examples 文件夹中,并运行其中的

miniedit.py 文件,打开可视化工具。

  1. 在可视化工具中创建出简单的网络拓扑

  1. 右击 host→“Properties”,选择对网络拓扑结构中的主机进行相关配置。

  1. “Edit”→“Preferences”,勾选 strat CLI(允许通过交互界面对拓扑结构进行调整)

选择所支持 Openflow 协议版本。

  1. 保存为 python 文件,选择“File”→“Export Level 2 Script”。

  1. 在终端运行保存下来的 python 文件即可。

  1. 命令行创建拓扑:
  1. 最小的网络拓扑,一个交换机下挂两个主机。

sudo mn --topo single,2

  1. 每个交换机连接一个主机,交换机间相连接。本例:4 个主机,4 个交换机。

  1. 每个主机都连接到同一个交换机上。本例:3 个主机,一个交换机。

  1. 交互式界面创建主机、交换机等

1) 通过命令行“mn”,创建出最简单的拓扑结构也就是一个交换机下面直接连接两个主机,并且产生 mininet 的交互界面。

2) 输入“py net.addHost(„主机名‟)” 为拓扑结构添加主机。

3) 输入“py net.addSwitch(„交换机名称‟)”为拓扑结构添加交换机。

4) 查看拓扑结构中存在的网络设备,观察设备是否被成功添加。

  1. 对节点间进行 ping 测试。
  1. pingall 查看所有主机之间的通信状况。

这里是对刚刚所建立的网络进行ping操作

  1. h1 ping -c4 h2 : h1 向 h2 发送四个包,测试 h1 与 h2 之间的通信

ping测试成功

  1. 进阶实验
  • 通过查看之前生成的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=Controller,

                      protocol='tcp',

                      port=6633)

    info( '*** Add switches\n')

    s1 = net.addSwitch('s1', cls=OVSKernelSwitch)

    info( '*** Add hosts\n')

    h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)

    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)

    h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)

    info( '*** Add links\n')

    net.addLink(s1, h1)

    net.addLink(h2, s1)

    net.addLink(s1, h3)

    net.addLink(s1, h4)

    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])

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

    CLI(net)

    net.stop()

if __name__ == '__main__':

    setLogLevel( 'info' )

    myNetwork()

研究之后就可以进行相关代码的编写

1) 编写 Python 脚本,定义如下拓扑:

i. topo linear,4

首先对其新建的网络拓扑图进行查看

大概拓扑图如下:

对部分代码进行修改,新添加主机和交换机

添加设备之间的连接

python运行如下

ii. topo single,3

首先查看网络的拓扑图

大概拓扑图如下:

然后对代码进行修改

运行的结果如下所示

iii. topo tree,depth=2,fanout=2

首先查看新建网络的拓扑

大概如下所示:

修改代码如下所示:

运行结果如下所示

iv. 1 个交换机,2 个主机,并且赋予主机 IP 地址。

首先查看网络拓扑图

大概拓扑图如下所示:

修改代码如下所示:

运行结果如下:

查看主机h1和h2的ip信息:

  • 编写 Python 脚本,对网络性能进行限制。观察下面给出的脚本文件,addHost()语法可以对主机 cpu 进行设置,以百分数的形式;addLink()语法可以设置带宽 bw、延迟 delay、最大队列的大小 max_queue_size、损耗率 loss。

这里采用的是编写代码如下所示:

结果如下所示:

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值