问题标签 [iperf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
854 浏览

android - 如何在 Runtime.getRuntime().exec() android 中正确运行 iperf 命令

我尝试在我的 android 设备中运行 iperf 服务器和客户端,所以我使用 exec() 开发了一个应用程序,它对于 ls、ping 等命令运行良好,但是当我尝试运行iperf -s时出现错误,这是代码我在清单文件中添加了互联网权限。帮助将不胜感激

iperf 命令的工作目录和环境是什么?

我收到以下错误

0 投票
1 回答
320 浏览

c++ - 通过UDP套接字手动发送到iperf?(C++)

我有一个程序需要在通过机器路由后测量总损耗。

iperf本质上,我在机器 A 上生成发往机器 C 的UDP 流量。但是,我首先通过机器 B** 路由此流量,然后通过原始套接字将其发送到机器 C 到端口 5001(iperf侦听的默认端口) ) 与sendto(). 运行 atcpdump显示机器 C 上正在接收数据包时,iperf服务器看不到这些连接或数据包。

我已经在iperf源代码中搜索了一下以了解它是如何工作的,并且我看到该函数接受了数据包

基本上,因为它只是 a recvfrom,如果我非常确定我不会随时修改数据包,并且使用函数sendto(s, buf, len, 0, (struct sockaddr*) &si_other, slen)和 a发送它们,我不明白为什么会有问题socket(AF_INET, SOCK_RAW, IPPROTO_UDP)

有人有想法么?为什么没有iperf注意到这种联系?

**我实际上将数据包路由到机器 A 上的 TUN 设备,然后从 A 上的用户空间程序中读取它们,使用 UDP 套接字将它们发送到 B,在 B 上的用户空间程序上读取它们,然后通过原始套接字发送它们带IP_HDRINCL残疾人。我在机器 A 和 B 上收到标题时打印出标题,我没有看到任何奇怪的东西。

0 投票
2 回答
396 浏览

wifi - IPERF;相邻 wifi 信道的丢包

我有两个 iperf 客户端和服务器。两者都在 5GHz 上。两者都在 20MHz 频道上。一个 iperf 客户端通过通道 36 发送数据,另一个通过通道 40 发送数据。同时在两个通道上发送数据时会出现巨大的损失,而当我们通过任一 iperf 客户端发送数据时几乎没有损失。这种情况的可能原因是什么?以及如何纠正它们?

注意:没有其他 wifi 设备在这些频道上工作。实验是在一个房间里设置的,所以范围不会成为问题。正在使用 UDP。

iperf 服务器命令: iperf -s -u -w 320k

iperf 客户端命令:iperf -c 192.168.XX.XXX -u -w 320k -t 10 -i 1 -b 300M

0 投票
2 回答
16499 浏览

python - 使用 Iperf 的 udp 流量用于 haproxy

我正在使用 Docker Container 对 Haproxy 进行“性能评估”的个人项目。我正在使用 Python 编程并使用 iperf 进行流量生成。

我创建了几个 Docker 容器作为客户端和服务器。客户端应该通过充当负载均衡器的 Haproxy 容器向服务器发送 udp 流量。

问题是当我尝试将 udp 流量从客户端发送到服务器时,Haproxy 拒绝连接。我在官方文档中没有找到如何绑定或监听 UDP 端口。

预先感谢您的回复。

这是我的 haproxy.cfg 的副本。

global quiet nbproc 4 daemon listen tcp_haproxy 172.17.4.230:5001 balance roundrobin server server0 172.17.4.227:5001 server server1 172.17.4.228:5001 server server2 172.17.4.229:5001

0 投票
2 回答
8613 浏览

linux - TCP 接收窗口大小大于 net.core.rmem_max

我正在iperf通过 10Gbit 链路连接的两台服务器之间运行测量。我正在尝试将我观察到的最大窗口大小与系统配置参数相关联。

特别是,我观察到最大窗口大小为 3 MiB。但是,我在系统文件中找不到相应的值。

通过运行,sysctl -a我得到以下值:

第一个值告诉我们最大接收器窗口大小为 6 MiB。然而,TCP 倾向于分配两倍的请求大小,因此最大接收器窗口大小应该是 3 MiB,正如我测量的那样。来自man tcp

请注意,TCP 实际上分配的缓冲区大小是 setsockopt(2) 调用中请求的缓冲区大小的两倍,因此后续的 getsockopt(2) 调用将不会返回与 setsockopt(2) 调用中请求的缓冲区大小相同的缓冲区。TCP 将额外空间用于管理目的和内部内核结构,并且 /proc 文件值反映了与实际 TCP 窗口相比更大的大小。

但是,第二个值net.core.rmem_max表示最大接收器窗口大小不能超过 208 KiB。这应该是硬限制,根据man tcp

tcp_rmem max:每个 TCP 套接字使用的接收缓冲区的最大大小。此值不会覆盖全局net.core.rmem_max. 这不用于限制在套接字上使用 SO_RCVBUF 声明的接收缓冲区的大小。

那么,我怎么会观察到大于中指定的最大窗口大小net.core.rmem_max

注意:我还计算了带宽延迟乘积:window_size = Bandwidth x RTT大约为 3 MiB(10 Gbps @ 2 毫秒 RTT),从而验证了我的流量捕获。

0 投票
1 回答
2507 浏览

python - 通过 Mininet 网络发送“随机”流量

我想使用 Mininet 测试数据中心路由算法。流量需要符合某些参数:

  1. 它应该由各种大小的“文件”组成(请注意,这些文件实际上不一定是文件;在例如 iperf 中生成的流量是可以的,只要大小是可控的);
  2. 文件大小应取自特定分布;
  3. 应为给定文件随机选择发送数据的源/目标主机对;
  4. 文件发送到其后继文件发送的时间间隔应该是随机的;和
  5. 如果在两台主机之间发送了一个巨大的文件,需要很长时间才能传输,那么它应该仍然可以在网络中的其他主机之间发送数据。

第 1-4 点已处理完毕。几天来我一直在为#5 苦苦挣扎,但我无法让它正常工作。我最初的想法是产生子进程/线程来向主机发送 iperf 命令:

命令 test_custom_iperf 以 Python Mininet API 的 iperf 版本为模型,包含-n传输大小参数:

使这种非阻塞变得非常困难。出于某种原因,我需要能够发送server.sendInt()命令,为此我需要等待客户端的命令完成。

我会很感激任何关于我可以尝试做什么的建议!

0 投票
1 回答
6930 浏览

linux - 同一主机上的 2 个接口之间的 iperf

我正在寻找一种方法如何在同一主机上的 2 个接口之间运行 iperf 基准测试,如架构上所示:

设置架构

两台机器(pc和路由器)都是linux的。
我需要一种方法来在我的“路由器”机器上运行一些功能测试,使用我仅有的 1 台带有 2 个以太网端口的 PC。


我已经尝试了几种不同的方法来解决它,但仍然没有运气:
1)使用度量标准为目标主机添加静态路由
2)将 iperf 绑定到特定的 IP 地址
3)禁用本地环回接口

基本上我正在寻找的是运行流量 192.168 .1.10<-->1.1.1.10 通过路由器设备(启用 ip 转发)。

0 投票
1 回答
302 浏览

bash - 在 bash 脚本中运行所需时间的函数时绘制进度条

我想添加进度条,同时给出要完成的功能百分比,例如 [===> ] 20% 完成。例如,我有一个使用的代码,iperf我给出了我想要的持续时间。

0 投票
1 回答
553 浏览

server - PyQt4:QProcess 启动 iperf3 无法连接到服务器

这就是我想要做的:使用 PyQt4 构建 GUI 程序,使两台计算机之间的测试连接更容易(以尽量减少人为错误)。因此,该程序的一部分是使用 QProcess 启动 iperf3,充当客户端或服务器。QProcess 能够成功启动 iperf3 并输出结果,但是,由于某种原因,PyQt 中的 iperf3 客户端无法连接到服务器,尽管我能够从终端连接到服务器。

这里简要描述一下作为服务器和客户端的情况和组合

  • 终端中的 iperf3 作为客户端 -> PyQt 中的 iperf3 作为服务器 - 成功
  • 终端中的 iperf3 作为客户端 -> 终端中的 iperf3 作为服务器 - 成功
  • PyQt 中的 iperf3 作为客户端 - > PyQt 中的 iperf3 作为服务器 - 无法连接
  • PyQt中的iperf3作为客户端->终端中的iperf3作为服务器-无法连接

我检查了防火墙并禁用了它以查看它是否解决了问题,但没有。以防万一您想知道我在终端中为 iperf3 使用了哪些命令,这里是:

  • 客户端 - iperf3 -c 127.0.0.1 -u -t 10
  • 服务器 - iperf3 -s

至于 QProcess:

  • self.process.start('iperf3',['-c 127.0.0.1 -u -t 10'])
  • self.process.start('iperf3',['-s'])

如果您需要更多信息,请告诉我。感谢您对此问题的任何帮助/见解。顺便说一句,我应该提到我现在正在本地笔记本电脑上测试这个程序,因此是环回地址。

0 投票
1 回答
3506 浏览

string - 批处理 - 从字符串中删除最后一个字符

我从 JSON 文件中得到以下字符串:

39468856,

现在,我想用这个数字来计算.. 因此,我必须,在最后删除。

此时我使用以下代码:

Set %%a=%%a:~0,1%我不起作用..也不是SET /a b=a*2(可能是因为,它)。

请在这件事上给予我帮助...

提前致谢