[环境搭建]mininet中实现随机流量模型,20180130

[环境搭建]mininet中实现随机流量模型

本文记录了如何实现“mininet拓扑中任意一台主机以等概率随机向另外一台主机发送一条UDP数据流,并将iperf测试结果自动保存到文件”的方法,概括来说则是“为mininet设置一条可实现上述功能的自定义命令‘iperfmulti’”。

  • 1.添加自定义函数及自定义命令
  • 使用nano编辑器打开并编辑“***/mininet/net.py”文件,输入命令:

nano  ***/mininet/net.py

    • 注:由于个人的mininet文件夹所在目录不同,故后文都用“***”表示该部分路径。
  • 在“Mininet”类的类体中添加自定义函数“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 + ‘ ‘   """ 设置UDP模式发送的带宽大小  """

print "***start server***"

server.cmd( iperfArgs + ‘-s -i 1‘ + ‘ > /home/zg/log/‘ + filename + ‘&‘)   """ 1.在此编辑服务器端的iperf命令,添加需要的参数;2.设置iperf命令的输出结果被保存到的路径 """

print "***start client***"

client.cmd(

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

+‘ > /home/zg/log/‘ + ‘client‘ + filename +‘&‘) """ 1.在此编辑客户端的iperf命令,添加需要的参数;2.设置iperf命令的输出结果被保存到的路径 """

  • 下图是“***/mininet/net.py”文件中“Mininet”类部分代码的截图:
  • 将自定义函数“iperf_single”的代码添加到“Mininet”类的类代码中:

需要注意的一点是Python语句的缩进,如

“def”前应有4个空格,同时,“def”下面的语句也应保持正确的缩进。

  • 在“Mininet”类的类体中添加自定义命令代码“iperfmulti”:

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"

  • 仍需注意的是Python语句的缩进。
  • 添加代码后如图所示:
  • 保存“***/mininet/net.py”文件,退出nano编辑器

在键盘上按“CTRL+X”,编辑器下方显示出“是否需要保存”的提示信息,如图:

  • 按一次“Y”键,再按一次“ENTER”键,即可保存“***/mininet/net.py”文件同时退出nano编辑器。
  • 2.在CLI类中令注册自定义命

    • 修改“***/mininet/mininet/cli.py”文件

      • 使用nano编辑器打开并编辑“***/mininet/mininet/cli.py”文件,输入命令:

nano ***/mininet/mininet/cli.py

  • 在nano编辑器中添加代码:

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

  • 注:代码需要添加在“CLI”类的类体中。
  • 在键盘上依次按下“CTRL+X”、“Y”键、“ENTER”键,即可保存“***/mininet/mininet/cli.py”文件同时退出nano编辑器。
  • 3.在mininet执行解释器中注册自定义命令与对应执行函数的映射关系

    • 修改“***/mininet/bin/mn”文件

      • 使用nano编辑器打开并编辑“***/mininet/bin/mn”文件,输入命令:

nano ***/mininet/bin/mn

  • 找到“ALTSPELLING”,添加“iperfmulti”及“iperfMulti”如图红框部分:
  • 4.重新编译mininet

    • 输入命令:

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

  • 5.如何使用自定义命令“iperfmulti”

    • 命令格式: iperfmulti <带宽>

      • 例如:

iperfmulti 150M

  • 输入命令并观察到终端输出“test has done”后(如上图),可查看测试结果,由前文自定义函数“iperf_single”的代码可知,测试结果保存在目录"/home/zg/log"下。
  • 观察"/home/zg/log"目录下有什么文件,使用以下2条命令:

cd /home/zg/log

ls

  • 由上图知,输出了4个文件,分别对应server1,server2,client1,client2的带宽测试输出文件。输出4个文件是由于作者使用了mininet默认的网络拓扑做实验,网络中只有两台主机,这两台主机分别各当了一次server、client,因此共有两组输出文件。
  • 查看iperf测试结果,使用命令“cat <文件名>”,例如:

cat 1.out

观察到输出结果:

原文地址:https://www.cnblogs.com/ownhp/p/9094908.html

时间: 2024-08-12 15:56:25

[环境搭建]mininet中实现随机流量模型,20180130的相关文章

【甘道夫】HBase开发环境搭建过程中可能遇到的异常:No FileSystem for scheme: hdfs

异常: 2014-02-24 12:15:48,507 WARN  [Thread-2] util.DynamicClassLoader (DynamicClassLoader.java:<init>(106)) - Failed to identify the fs of dir hdfs://fulonghadoop/hbase/lib, ignored java.io.IOException: No FileSystem for scheme: hdfs 解决: 在pom文件中加入: &

python图工具中基于随机块模型动态网络社团检测

原文链接:http://tecdat.cn/?p=7602 这是“政治博客圈和2004年美国大选”中的政治博客网络图,但是边缘束是使用随机块模型确定的(注:下图与图相同(即,布局和数据相同)). Tiago论文中的5-我只是在上面放了一个黑色背景 . 边缘配色方案与Adamic和Glance的原始论文中的相同,即每个节点对应一个博客URL,颜色反映政治取向,红色代表保守派,蓝色代表自由派.橙色边从自由派博客到保守派博客,紫色边从保守派到自由派(参见Adamic和Glance中的图1). 颜色方案

Selenium TestNG Java环境搭建过程中所遇问题汇总

[问题一]运行时报Unalbe to connect to host 127.0.0.1 on port 7855 [问题分析]Selenium版本与火狐版本不一致,需要下载对应的版本 [解决方式]根据Selenium版本下载对应的火狐版本,版本具体对应方式可以查看官网相关说明(http://www.seleniumhq.org/download/) [问题二]运行时报Main函数错误 [问题分析]由于当前运行JAVA版本为JDK1.6,版本较低,需要高版本的JDK [解决方式]卸载JDK1.6

Struts2基本环境搭建过程中容易出现的丢包问题

就拿一个最简单的struts2的hello world为例来说明吧. struts2是继承自ActionSupport类,所以说一个最简单的hello world是不能缺少该类的包的,也就是说不能缺少xwork-core-2.3.16.jar,由于我们要搭建的框架是struts2,所以说也不能缺少struts2-core-2.3.16.jar,否则这就不是struts2框架了. 综上所述,一个struts2框架必不可少的包文件有: struts2-core-2.3.16.jar xwork-co

Informatica环境搭建过程中一些问题-近期项目进了新人,在搭建环境中存在一些问题,之前都处理过一直没有整理,这次接着机会,把这些常见问题处理整理出来

一.Informatica9.5.1创建资源库出错找不到libpmora8.so 错误如下: Database driver event...Error occurred loading library [libclntsh.so.10.1: cannot open shared object file: No such file or directory]Database driver event...Error occurred loading library [libpmora8.so]

hadoop环境搭建过程中遇到的问题

下面是我在安装Hadoop的过程中遇到的一些问题总结,后续将会陆续一一添加,前车之鉴,希望大家今后遇到类似的问题可以避免. 问题1:hadoop 不在 sudoers 文件中.此事将被报告. 我的slave1和slave2都是直接克隆master的.所以直接使用hadoop用户名登陆ubuntu的系统的.在修改主机名的时候,使用sudo vi /etc/hostname出现上述提示. 解决方法: (1).切换ubuntu用户名(创建master虚拟机的时候第一次设置的用户名)登陆ubuntu系统

go语言学习--入门及环境搭建(更新中)

论坛 http://www.golangtc.com/ 入门教程: http://tour.golangtc.com/ http://www.golang-book.com/ 开发工具配置 sublime: http://www.cnblogs.com/sevenyuan/archive/2013/03/01/2938351.html LiteIDE: http://blog.csdn.net/qiurisuixiang/article/details/8728152 代码 https://go

Kafka开发环境搭建(五)

如果你要利用代码来跑kafka的应用,那你最好先把官网给出的example先在单机环境和分布式环境下跑通,然后再逐步将原有的consumer.producer和broker替换成自己写的代码.所以在阅读这篇文章前你需要具备以下前提: 1.  简单了解kafka功能,理解kafka的分布式原理 2.  能在分布式环境下成功运行—topic test. 如果你还没有完成上述两个前提,请先看: kafka分布式初步      kafka搭建分布式环境 接下来我们就简单介绍下kafka开发环境的搭建.

大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用介绍.本文主要讲解如何搭建Hadoop+Hive的环境. 一.环境准备 1,服务器选择 本地虚拟机 操作系统:linux CentOS 7 Cpu:2核 内存:2G 硬盘:40G 说明:因为使用阿里云服务器每次都要重新配置,而且还要考虑网络传输问题,于是自己在本地便搭建了一个虚拟机,方便文件的传输以