博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mininet添加iperfmulti功能
阅读量:6292 次
发布时间:2019-06-22

本文共 2352 字,大约阅读时间需要 7 分钟。

在mininet中增加新功能主要分为3步:

1. 修改net.py增加函数实体;

2. 修改cli.py,增加对应do_function函数,用于命令解析;

3. 修改mn函数,用于声明命令。

net.py和cli.py文件均在mininet/mininet目录,mn文件在在mininet/bin目录下.

修改cli.py

def do_iperfmulti( self, line ):   		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,int(period))		else:			error('invalid number of args: iperfmulti udpBw \n' +'udpBw examples: 1M\n')

 修改net.py

def iperfMulti( self, load, period=5):		""Multi iperf UDP test between nodes"""		base_port = 5001		#output(load)		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)		#output(_len)		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=load, period=period, port=base_port)			sleep(.05)			base_port += 1				sleep(period)

 

def iperf_single( self,hosts=None, udpBw=5, period=5, port=5001):        """"""        if not hosts:            return        else:            assert len( hosts ) == 2        client, server = hosts        filename = client.name+'.out'        filenameserver = server.name+'.out'        delayname = client.name+'-'+server.name+'.delay'        output( '***testing bandwidth between ' )        output( "%s and %s\n" % ( client.name, server.name ) )        iperfArgs = 'iperf -u'            print "****start server******"        server.cmd( iperfArgs + '-s' + ' >> /home/zhao/log/' + 'server-'+filenameserver + '&')        print "****start client******"        client.cmd(iperfArgs + '-t ' + str(period) + ' -c ' + server.IP() + ' -b '+str(udpBw)+'M'+ ' >> /home/zhao/log/'+ 'client-' + filename +'&')

 

 

修改mn

TESTS = [ 'cli', 'build', 'pingall', 'pingpair', 'iperf', 'all', 'iperfudp', 'none', 'iperfmulti' ]ALTSPELLING = { 'pingall': 'pingAll',                'pingpair': 'pingPair',                'iperfudp': 'iperfUdp',                'iperfUDP': 'iperfUdp',		'iperfmulti': 'iperfmulti' }

 输入以下命令重新编译安装mininet core

  sudo ./mininet/util/install.sh -n

重启mininet,输入iperf,可使用table补全iperfmulti,从而可使用iperfmulti进行测试

转载于:https://www.cnblogs.com/zzuzmy/p/4420293.html

你可能感兴趣的文章
关于redis的几件小事(六)redis的持久化
查看>>
webpack4+babel7+eslint+editorconfig+react-hot-loader 搭建react开发环境
查看>>
Maven 插件
查看>>
初探Angular6.x---进入用户编辑模块
查看>>
计算机基础知识复习
查看>>
【前端词典】实现 Canvas 下雪背景引发的性能思考
查看>>
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>