netcat吞吐量低而iperf高


9

我正在测试连接在同一路由器上的两台计算机之间的吞吐量,其中一台具有100mbps局域网,另一台具有54mbps wifi。

这是有趣的部分:

  • 使用nc,从A传送到B时,我得到2.63MB / s(用来衡量pv -r|nc ipB
  • 使用iperf,我得到23MB / s,这几乎可以。

可能是什么问题nc

两者的操作系统均为ubuntu 11.04。


我有一个非常类似的问题,您可能会发现它有用:用netcat与CIFS / SMB传输速率测量网络吞吐量

Answers:


6

关于NetCat不支持TCP窗口的正确声音。如果您在两个基准测试运行时在接口上执行tcpdump,我猜您会在NC中看到以下模式:

  1. 数据包->
  2. <-确认
  3. 数据包->
  4. <-确认
  5. 数据包->
  6. <-确认
  7. 数据包->
  8. <-确认

IPerf的这种模式:

  1. 数据包->
  2. 数据包->
  3. 数据包->
  4. 数据包->
  5. 数据包->
  6. 数据包->
  7. <-确认
  8. 数据包->
  9. 数据包->
  10. 数据包->
  11. 数据包->
  12. 数据包->
  13. 数据包->
  14. <-确认
  15. 数据包->
  16. 数据包->
  17. 数据包->
  18. 数据包->
  19. 数据包->
  20. 数据包->
  21. <-确认

通过窗口化TCP段,您可以获得更高的吞吐量,因为您不必在每个数据包之后都等待每个数据包之后的Ack。


1
我可以确认我在10g设置中看到了相同的问题。dd/netcat与相比,报告的带宽更低iperfdd/netcat报告约为3Gb / s,而iperf报告为9Gb / s。
文斯

在这里检查您的猜测是否正确?:)
rogerdpack

我的使用netcat的Windows 10盒仅发送8KB数据包,而TCP窗口大小仅为8KB,导致千兆位性能太差。在nc和ncat中都发生,但是SSH在同一台计算机之间提供90+ MB / sec的速度。有一个老的bug在Windows套接字导致此: support.microsoft.com/en-us/help/823764/...
猎户座劳勒

1

不是netcat。随着iperf我得到

[  3] local 192.168.1.201 port 55610 connected with 192.168.1.200 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   394 MBytes  39.4 MBytes/sec

随着nc -l -p 1852 > /dev/nullcat /dev/zero | pv -r | nc 192.168.1.200 1852我得到

[  34MB/s]

(在30至60之间波动。)

您要提供什么数据netcat


0

仅仅因为您的无线卡具有54mbs的连接能力,并不意味着您将获得该吞吐量。特别是,听起来好像您拥有802.11g,且带有Achilies鞋跟。只要**它正在以每*无线设备还它会走的快,但只要甚至一个设备,这只是b的速度能,它必须使用最小公分母交谈的所有设备。

您可以尝试打开具有无线功能并正在运行的计算机上的终端iwconfig。查找“ 比特率=”字段,并查看您实际连接的速度。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.