我的服务器机房的机架中有两台戴尔服务器:
- RHEL 7.9 x86-64和iperf-2.0.13-1.el7.x86_64
- 主机名是
A
和B
- 每个都有
- 1 个 10GbE 英特尔网卡,有 2 个端口
- 1 个 1Gbps 英特尔网卡{传统},有 2 个端口
- 1 张 Mellanox infiniband 卡
- 我的网络命名是
- em1,10GbE 端口 1
- em2,10GbE 端口 2
- em3,1Gbps 端口 1,静态IP 192.168.1.1 / 255.255.255.0
- em4,1Gbps 端口2
- ib0、mellanox infiniband 100 Gbps、静态IP 192.168.2.1 / 255.255.255.0
A
为 192.168.x.1 和B
192.168.x.2,其中 x = 1 表示 1Gbps,x = 2 表示 infiniband- 我可以在 infiniband 192.168.2.x 子网上的
ping
每个之间以及两个之间。scp
如果A
我简单地iperf -s
这样做,B
我iperf -c 192.168.1.1
就可以工作并说 942 mbits/sec。但B
如果我这么做了,iperf -c 192.168.2.1
我就没有办法主持。
在这种情况下如何iperf
查看特定网络接口的传输速度?特别是我的ib0
?em1
当我完成设置后,最终会超过我的10GbE 吗?
答案1
你能得到来自sourceforge的最新消息?我建议 git checkout 2-1-1-dev 并构建它。
对于您的问题,可以使用 % 约定绑定到接口,例如 iperf -c 192.168.1.1%ib0
请参阅手册页,注释部分:
对于客户端和服务器,绑定是使用 -B 选项在逻辑级别(IP 地址或第 3 层)完成的,以及在设备(或第 2 层)级别使用百分比 (%) 分隔符完成的。在客户端,-B 选项影响bind(2) 系统调用,并将设置源IP 地址和源端口,例如iperf -c -B 192.168.100.2:6002。这控制数据包的源值,但不控制路由。这些可能会造成混淆,因为路由或设备查找可能不是具有配置的源 IP 的设备的路由或设备查找。因此,例如,如果 eth0 的 IP 地址用于 -B,并且目标 IP 地址的路由表将输出接口解析为 eth1,则主机将使用 eth1 的源 IP 地址将数据包发送到设备 eth1。数据包中的 eth0。要影响物理输出接口(例如双宿主系统),请使用 -c %(需要 root)绕过此主机路由表查找,或者为每个 -B 源地址配置策略路由并在策略路由中适当设置输出接口。在服务器或接收端,仅接收发往 -B IP 地址的数据包。它对于多播也很有用。例如,iperf -s -B 224.0.0.1%eth0 将仅接受在 eth0 接口上接收的目标 ip 224.0.0.1 的 ip 多播数据包,而 iperf -s -B 224.0.0.1 将在任何接口上接收这些数据包,最后,v6 链路本地需要设备说明符,例如 -c [v6addr]% -V,以选择输出接口。