Mininet多数据中心网络拓扑流量带宽实验
任务目的
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 +'&')
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092039.png)
步骤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"
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092014.png)
步骤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')
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092230.png)
步骤4 bin/mn中加入iperfmulti可执行命令
将iperfmulti加入到对应的列表中。
ALTSPELLING = { 'pingall': 'pingAll', 'pingpair': 'pingPair',
'iperfudp': 'iperfUdp','iperfmulti':'iperfMulti' }
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092458.png)
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092641.png)
步骤5 重新编译mininet
进入mininet/util目录,重新编译安装mininet。
#~/mininet/util/install.sh -n
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092600.png)
步骤6 验证iperfmulti是否成功
重新创建网络,如mn,输入iperf,可用table补全iperfmulti,从而可使用iperfmulti进行流量随机模型的测试:
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092810.png)
*二、 多数据中心拓扑创建脚本编写*
步骤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() ) }
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092712.png)
*三、 数据中心拓扑脚本执行*
步骤1 启动Mininet,生成测试拓扑结构,进入到Mininet的custom目录下:
\# mn --custom fattree.py --topo mytopo --controller=remote,ip=30.0.1.12,port=6653
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420092959.png)
步骤2 验证主机间的连通性:
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420093233.png)
步骤3 查看ODL控制器Web页面拓扑:http://30.0.1.12:8181/index.html,用户名密码:admin/admin
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420093315.png)
*四、 数据中心拓扑网络测试—TCP带宽测试*
****
步骤1 同一交换机内部的主机间连通性及通信带宽测试
在h1和h2之间进行iperf操作进行测试:
mininet> iperf h1 h2
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420093404.png)
步骤2 相同汇聚交换机下不同机架的主机间测试
在h1和h3之间进行iperf操作进行测试:
mininet> iperf h1 h3
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420093453.png)
步骤3 相同核心交换机不同汇聚交换机下的主机间测试
在h1和h5之间进行iperf操作进行测试:
mininet> iperf h1 h5
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420093512.png)
*五、 数据中心拓扑网络测试—iperfmulti UDP测试*
步骤1 在mininet中执行iperfmulti命令,设置带宽参数为0.025M,我们将能看到8台主机随机地向另外一台主机发送数据包。
mininet> iperfmulti 0.025M
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420093540.png)
打开服务端数据记录:
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420093605.png)
打开服务端数据记录:
![](https://cdn.jsdelivr.net/gh/JackieLing/mage1/img/20210420093652.png)
Mininet多数据中心网络拓扑流量带宽实验相关推荐
- SDN-Mininet模拟多数据中心带宽实验
一.实验目的: 通过Mininet模拟搭建基于不同数据中心的网络拓扑; 掌握多数据中心网络拓扑的构建; 熟悉网络性能测试工具lperf,根据实验测试SDN网络的性能; 通过程序生成真实网络流量. 二. ...
- Mininet教程(六):多数据中心带宽实验
文章目录 Mininet教程(六):多数据中心带宽实验 拓扑结构 使能生成树协议(STP) 带宽测试 自定义命令拓展 流量随机模型下UDP带宽测试 Mininet教程(六):多数据中心带宽实验 SDN ...
- 《数据中心虚拟化技术权威指南》一2.2 数据中心网络拓扑
本节书摘来自异步社区<数据中心虚拟化技术权威指南>一书中的第2章,第2.2节,作者[巴西]Gustavo A. A. Santana,更多章节内容可以访问云栖社区"异步社区&qu ...
- 网络安全04_互联网发展史_网线+网卡+协议栈_中继器_集线器_网桥_路由器_AC/AP_防火墙_流控_家庭网络_小型创业公司网络_园区网_政务网络_数据中心网络拓扑_电信网/互联网_Mac地址
互联网发展史 如何将两个主机连接起来? 在网络诞生之前,电脑都是单机运行,没有网卡,没有网线,没有协议栈,数据传输主要靠软盘.光盘等介质. 网线+网卡+协议栈 网线:物理介质,承载比特流/电信号(类似 ...
- 数据中心网络流量精细运维
从IDC运营商和云服务商的角度来说,做好网络运维是企业的根本.国内对互联网带宽需求的快速增长,催生出很多大型的IDC服务商,他们在全省.全国,甚至全世界布局数据中心.快速布局的同时如何对数据中心流量精 ...
- 多数据中心的高可用结构【环状星型数据库架构】
贴一些比较老的内容,文章是新写的,技术可能都是大家熟悉的,给入门的兄弟们参考.高手轻拍 原文请见:http://www.muduo.net/index.php/u ... space-itemid-3 ...
- 携程开源Redis多数据中心解决方案-XPipe
https://zhuanlan.zhihu.com/p/27125444 Redis在携程内部得到了广泛的使用,根据客户端数据统计,整个携程全部Redis的读写请求在每秒200W,其中写请求约每秒1 ...
- 【云上技术】中大型规模企业如何部署多数据中心?
简介: 随着现代化进程加速,企业业务规模和迭代速度也今非昔比,在已具备一定规模的中大型电力系统中,会面临着数字化升级的压力,包括复杂组织架构管理.计算资源弹性扩展.IT运维提效等需求.基于电力行业属性 ...
- Lync Server 2010所需媒体网络流量带宽详解和计算
如果在组织内部部署Lync Server 2010,那么最大的优势就是解决了组织内部的即时通讯需求,为什么这么说?因为纵观现在微软所推行的商业智能应用平台,可以非常直观的了解到实际上整个微软商业平台就 ...
最新文章
- vue.js 初体验— Chrome 插件开发实录
- 3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
- java set第n位_数据结构与算法——常用数据结构及其Java实现
- [递归]递归问题解题思路
- 企业应用程序中需要捕获的5大Java性能指标
- 桌面记事本软件测试工资,记事本的一个BUG
- 华为鸿蒙消费者,王成录谈鸿蒙挑战和华为消费者业务崛起
- 【CentOS 7笔记】cp、mv、文档查看方式
- 解决li在ie,firefox中行高不一致问题
- vs2005打点不提示
- 2016、11、17
- 首批列入民族网游工程的21种游戏公布
- gbq可以算出土建量吗_广联达土建算量软件必备操作指南
- 还需要注册的是我们还有一个是“交差集” cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据进行一个N*M的组合,即笛卡尔积。表达式如下:...
- pytorch中的torch.nn.Unfold和torch.nn.Fold
- 中国锂电设备行业营状况分析及未来发展动向预测报告2022-2028年版
- DWCS6搭建jsp开发环境及使用ajax实现用户注册(基于文件)
- php 二维码白边,php生成缩略图自动填充白边例子
- 计算机考研规划 知乎,考研知乎最全117个问题!看完让你的考研成功率大大提高...
- 2022美赛数学建模B题思路分享