我需要测试服务器自身的网络吞吐量(这是一个很长的故事!)。
我喜欢 Iperf 并在网络上使用它,但是,我只是不知道如何将它绑定到单个接口并仅通过该接口进行监听。
根据文档,我假设这会起作用:iperf -B eth0 -s 将一个实例绑定到 eth0,然后在另一个会话中:iperf -B eth1 -c ip.of.eth.1。
这根本不起作用,实际上失败了。如果我使用 ip 而不是接口,它确实可以工作,但是,吞吐量为 29Gb/s - 所以,除非有什么神奇的事情发生,我有一个带有 30Gb/s 卡的超级服务器,否则我猜我甚至没有接触网络,这只是在本地进行。
有人能帮助我吗,或者知道更好的测试/工具?
答案1
是的,此流量在本地传输,不会到达您的物理接口。它使用环回接口进行传输。内核检测到目的地是本地,因此流量会环回到机器本身,而无需通过 eth0 或 eth1。
答案2
我知道这已经过时了,但还是发布一下,希望它能对其他人有帮助。
如果 iPerf 处于服务器模式,则使用 -c 指定主机将限制 iPerf 接受到指定主机的连接。对 UDP 不起作用。
我用它来执行 TCP 吞吐量测试Windows 7 64位从 LAN 到 WiFi 接口。使用任一接口都可以iperf 2.0.8 或 2.0.5,不确定其他版本。请参阅下面使用的命令。
iperf.exe -B 192.168.0.1 -s -c 192.168.0.2 -P 0 -i 1 -p 5001 -f m
iperf.exe -B 192.168.0.2 -c 192.168.0.1 -P 1 -i 1 -p 5001 -f m -t 100 -F c:\data.bin
答案3
由于声誉不足,我无法发表评论,因此我将添加一个不是答案的答案,而是在https://stackoverflow.com/questions/2734144/linux-disable-using-loopback-and-send-data-via-wire-between-2-eth-cards-of-one/4490220#4490220理论上看起来不错,但实际上都不起作用(至少在 Debian/Ubuntu 上,因为当您删除本地路由或尝试使用虚拟 NAT 地址时,iperf 无法分配 IP 地址。)
只是为了节省人们的时间和精力,因为他们需要做一些理论上看起来不错,但实际上在(现代)Debian/Ubuntu 上不起作用的事情......