任务目的

1、通过Mininet模拟搭建基于不同数据中心的网络拓扑; 2、掌握多数据中心网络拓扑的构建; 3、熟悉网络性能测试工具Iperf,根据实验测试SDN网络的性能; 4、通过程序生成真实网络流量。

任务环境

设备名称 软件环境 硬件环境
主机 Mininet_2.2.0_desktop_cv1.1 CPU:1核内存2G磁盘:20G

注:系统默认的账户为: 管理员权限用户名:root,密码:root@openlab; 普通用户用户名:openlab,密码:user@openlab。

实验步骤

*一、 实现iperfmulti功能生成多客户端随机产生UDP流量*

步骤1 登录Mininet所在虚机,在Mininet目录下mininet/net.py文件中定义iperf_single()函数

在两个主机间进行iperf udp测试,并且在server端记录,实现iperf_single函数:

def iperf_single( self,hosts=None, udpBw='10M', period=60, port=5001):

      """Run iperf between two hosts using UDP.

        hosts: list of hosts; if None, uses opposite hosts        returns: results two-element array of server and client speeds"""

      if not hosts:

        return

      else:

        assert len( hosts ) == 2

      client, server = hosts

      filename = client.name[1:] + '.out'

      output( '*** Iperf: testing bandwidth between ' )

      output( "%s and %s\n" % ( client.name, server.name ) )

      iperfArgs = 'iperf -u '

      bwArgs = '-b ' + udpBw + ' '

      print "***start server***"

      server.cmd( iperfArgs + '-s -i 1' + ' > /home/sdnlab/log/' + filename + '&')

      print "***start client***"

      client.cmd(

        iperfArgs + '-t '+ str(period) + ' -c ' + server.IP() + ' ' + bwArgs

        +' > /home/sdnlab/log/' + 'client' + filename +'&')

步骤2 net.py中添加自定义命令iperfmulti() 函数

为mininet添加自定义命令iperfmulti,依次为每一台主机随机选择另一台主机作为iperf的服务器端,通过调用iperf_single,自身以客户端身份按照指定参数发送UDP流,服务器生成的报告以重定向的方式输出到文件中,使用iperfmulti命令,主机随机地向另一台主机发起一条恒定带宽的UDP数据流。

 def iperfMulti(self, bw, period=60):        base_port = 5001        server_list = []        client_list = [h for h in self.hosts]        host_list = []        host_list = [h for h in self.hosts]

        cli_outs = []        ser_outs = []

        _len = len(host_list)        for i in xrange(0, _len):            client = host_list[i]            server = client            while( server == client ):                server = random.choice(host_list)            server_list.append(server)            self.iperf_single(hosts = [client, server], udpBw=bw, period= period, port=base_port)            sleep(.05)            base_port += 1

        sleep(period)        print "test has done"

步骤3 mininet/cli.py中注册iperfmulti命令

解析用户输入的命令,net.py定义的iperfmulti命令需要在CLI类中注册这条自定义命令。

def do_iperfmulti( self, line ):        """Multi iperf UDP test between nodes"""        args = line.split()        if len(args) == 1:            udpBw = args[ 0 ]            self.mn.iperfMulti(udpBw)        elif len(args) == 2:            udpBw = args[ 0 ]            period = args[ 1 ]            err = False            self.mn.iperfMulti(udpBw, float(period))        else:            error('invalid number of args: iperfmulti udpBw period\n' +                   'udpBw examples: 1M 120\n')

步骤4 bin/mn中加入iperfmulti可执行命令

将iperfmulti加入到对应的列表中。

ALTSPELLING = { 'pingall': 'pingAll', 'pingpair': 'pingPair',

        'iperfudp': 'iperfUdp','iperfmulti':'iperfMulti' }


步骤5 重新编译mininet

进入mininet/util目录,重新编译安装mininet。

#~/mininet/util/install.sh -n


步骤6 验证iperfmulti是否成功

重新创建网络,如mn,输入iperf,可用table补全iperfmulti,从而可使用iperfmulti进行流量随机模型的测试:


*二、 多数据中心拓扑创建脚本编写*

步骤1 通过python脚本自定义拓扑,创建包含两个数据中心的网络拓扑:

# cd custom# vi fattree.py

#!/usr/bin/python"""Custom topology exampleAdding the 'topos' dict with a key/value pair to generate our newly definedtopology enables one to pass in '--topo=mytopo' from the command line."""from mininet.topo import Topofrom mininet.net import Mininetfrom mininet.node import RemoteController,CPULimitedHostfrom mininet.link import TCLinkfrom mininet.util import dumpNodeConnections

class MyTopo( Topo ):    "Simple topology example."

    def __init__( self ):        "Create custom topo."

        # Initialize topology        Topo.__init__( self )        L1 = 2        L2 = L1 * 2         L3 = L2        c = []        a = []        e = []

        # add core ovs          for i in range( L1 ):                sw = self.addSwitch( 'c{}'.format( i + 1 ) )                c.append( sw )

        # add aggregation ovs        for i in range( L2 ):                sw = self.addSwitch( 'a{}'.format( L1 + i + 1 ) )                a.append( sw )

        # add edge ovs        for i in range( L3 ):                sw = self.addSwitch( 'e{}'.format( L1 + L2 + i + 1 ) )                e.append( sw )

        # add links between core and aggregation ovs        for i in range( L1 ):                sw1 = c[i]                for sw2 in a[i/2::L1/2]:                # self.addLink(sw2, sw1, bw=10, delay='5ms', loss=10, max_queue_size=1000, use_htb=True)                        self.addLink( sw2, sw1 )

        # add links between aggregation and edge ovs        for i in range( 0, L2, 2 ):                for sw1 in a[i:i+2]:                    for sw2 in e[i:i+2]:                        self.addLink( sw2, sw1 )

        #add hosts and its links with edge ovs        count = 1        for sw1 in e:                for i in range(2):                    host = self.addHost( 'h{}'.format( count ) )                    self.addLink( sw1, host )                    count += 1topos = { 'mytopo': ( lambda: MyTopo() ) }

*三、 数据中心拓扑脚本执行*

步骤1 启动Mininet,生成测试拓扑结构,进入到Mininet的custom目录下:

\# mn --custom fattree.py --topo mytopo --controller=remote,ip=30.0.1.12,port=6653


步骤2 验证主机间的连通性:


步骤3 查看ODL控制器Web页面拓扑:http://30.0.1.12:8181/index.html,用户名密码:admin/admin


*四、 数据中心拓扑网络测试—TCP带宽测试*

****

步骤1 同一交换机内部的主机间连通性及通信带宽测试

在h1和h2之间进行iperf操作进行测试:

mininet> iperf h1 h2


步骤2 相同汇聚交换机下不同机架的主机间测试

在h1和h3之间进行iperf操作进行测试:

mininet> iperf h1 h3


步骤3 相同核心交换机不同汇聚交换机下的主机间测试

在h1和h5之间进行iperf操作进行测试:

mininet> iperf h1 h5


*五、 数据中心拓扑网络测试—iperfmulti UDP测试*

步骤1 在mininet中执行iperfmulti命令,设置带宽参数为0.025M,我们将能看到8台主机随机地向另外一台主机发送数据包。

mininet> iperfmulti 0.025M


打开服务端数据记录:


打开服务端数据记录:


Mininet多数据中心网络拓扑流量带宽实验相关推荐

  1. SDN-Mininet模拟多数据中心带宽实验

    一.实验目的: 通过Mininet模拟搭建基于不同数据中心的网络拓扑; 掌握多数据中心网络拓扑的构建; 熟悉网络性能测试工具lperf,根据实验测试SDN网络的性能; 通过程序生成真实网络流量. 二. ...

  2. Mininet教程(六):多数据中心带宽实验

    文章目录 Mininet教程(六):多数据中心带宽实验 拓扑结构 使能生成树协议(STP) 带宽测试 自定义命令拓展 流量随机模型下UDP带宽测试 Mininet教程(六):多数据中心带宽实验 SDN ...

  3. 《数据中心虚拟化技术权威指南》一2.2 数据中心网络拓扑

    本节书摘来自异步社区<数据中心虚拟化技术权威指南>一书中的第2章,第2.2节,作者[巴西]Gustavo A. A. Santana,更多章节内容可以访问云栖社区"异步社区&qu ...

  4. 网络安全04_互联网发展史_网线+网卡+协议栈_中继器_集线器_网桥_路由器_AC/AP_防火墙_流控_家庭网络_小型创业公司网络_园区网_政务网络_数据中心网络拓扑_电信网/互联网_Mac地址

    互联网发展史 如何将两个主机连接起来? 在网络诞生之前,电脑都是单机运行,没有网卡,没有网线,没有协议栈,数据传输主要靠软盘.光盘等介质. 网线+网卡+协议栈 网线:物理介质,承载比特流/电信号(类似 ...

  5. 数据中心网络流量精细运维

    从IDC运营商和云服务商的角度来说,做好网络运维是企业的根本.国内对互联网带宽需求的快速增长,催生出很多大型的IDC服务商,他们在全省.全国,甚至全世界布局数据中心.快速布局的同时如何对数据中心流量精 ...

  6. 多数据中心的高可用结构【环状星型数据库架构】

    贴一些比较老的内容,文章是新写的,技术可能都是大家熟悉的,给入门的兄弟们参考.高手轻拍 原文请见:http://www.muduo.net/index.php/u ... space-itemid-3 ...

  7. 携程开源Redis多数据中心解决方案-XPipe

    https://zhuanlan.zhihu.com/p/27125444 Redis在携程内部得到了广泛的使用,根据客户端数据统计,整个携程全部Redis的读写请求在每秒200W,其中写请求约每秒1 ...

  8. 【云上技术】中大型规模企业如何部署多数据中心?

    简介: 随着现代化进程加速,企业业务规模和迭代速度也今非昔比,在已具备一定规模的中大型电力系统中,会面临着数字化升级的压力,包括复杂组织架构管理.计算资源弹性扩展.IT运维提效等需求.基于电力行业属性 ...

  9. Lync Server 2010所需媒体网络流量带宽详解和计算

    如果在组织内部部署Lync Server 2010,那么最大的优势就是解决了组织内部的即时通讯需求,为什么这么说?因为纵观现在微软所推行的商业智能应用平台,可以非常直观的了解到实际上整个微软商业平台就 ...

最新文章

  1. vue.js 初体验— Chrome 插件开发实录
  2. 3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
  3. java set第n位_数据结构与算法——常用数据结构及其Java实现
  4. [递归]递归问题解题思路
  5. 企业应用程序中需要捕获的5大Java性能指标
  6. 桌面记事本软件测试工资,记事本的一个BUG
  7. 华为鸿蒙消费者,王成录谈鸿蒙挑战和华为消费者业务崛起
  8. 【CentOS 7笔记】cp、mv、文档查看方式
  9. 解决li在ie,firefox中行高不一致问题
  10. vs2005打点不提示
  11. 2016、11、17
  12. 首批列入民族网游工程的21种游戏公布
  13. gbq可以算出土建量吗_广联达土建算量软件必备操作指南
  14. 还需要注册的是我们还有一个是“交差集” cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据进行一个N*M的组合,即笛卡尔积。表达式如下:...
  15. pytorch中的torch.nn.Unfold和torch.nn.Fold
  16. 中国锂电设备行业营状况分析及未来发展动向预测报告2022-2028年版
  17. DWCS6搭建jsp开发环境及使用ajax实现用户注册(基于文件)
  18. php 二维码白边,php生成缩略图自动填充白边例子
  19. 计算机考研规划 知乎,考研知乎最全117个问题!看完让你的考研成功率大大提高...
  20. 2022美赛数学建模B题思路分享

热门文章

  1. java @literal_Class Literal(Java)
  2. unity之龙骨动画的使用
  3. Kbengine介绍
  4. 2022 年全国硕士研究生入学统一考试英语(一)试题
  5. 物理机如何迁移到云服务器?
  6. 解决Ubuntu没有有效的IP地址
  7. openfire--好友管理实现好友添加及分组管理
  8. Dom.nodeType
  9. VoLTE 场景功耗测试
  10. 《论语》的启示 by 傅一平