带宽ttcp和PCTTCP

时间:2015-02-16 14:24:23

标签: sockets networking network-programming winsock winsock2

我对Winsock编程有一个非常有趣的问题。说实话:我对此并不感到好笑。

我的目标是测试GBit网络的带宽。我使用嵌入式系统(包括GBit网络芯片)将带有GBit网卡(Windows 7 64位)的PC连接起来。

嵌入式系统作为UDP服务器工作(不要问我细节,它是FPGA编程的东西)。 从网站http://www.pcausa.com/Utilities/ttcpdown1.htm我下载了PCATTCP工具。

工具PCATTCP我使用以下选项运行它:

 PCATTCP.exe -t -l 1178  -u -p XYZ -f m -s A.B.C.D <MyBinaryFile.bin

(在这种情况下,端口号XYZ和IP地址不重要) 结果是带宽约为150 Mbit / s。

在PC上安装了cygwin(64位)环境,其中包含工具ttcp。 所以我开始使用ttcp:

ttcp -t -l 1178  -u -p XYZ -f m A.B.C.D <MyBinaryFile.bin

这里我们有大约600 Mbit / s。 这真的是真的吗? Cygwin的ttcp比PCATTCP的纯winsock调用更快??? 为了确保这一点,我开始使用Wireshark。是的,Wireshark的时间栏告诉我,ttcp工具比PCATTCP更快。 此外,我使用以下选项运行ttcp:

ttcp -t -l 1178 –b 1178 -u -p XYZ -f m A.B.C.D <MyBinaryFile.bin

然后带宽几乎与PCATTCP(大约150 Mbit / s)相同。 'b'选项用于设置套接字缓冲区大小。但它对PCATTCP工具没有影响。

在这种情况下,我有以下问题: Cygwin如何沟通?它是否使用风向袋?

如果用PCATTCP工具更改套接字缓冲区大小,为什么不起作用?

有人对此案有任何建议吗?

问候,

托马斯

1 个答案:

答案 0 :(得分:0)

所以,

我找到了一些信息,cygwin如何使用套接字:

https://cygwin.com/cygwin-ug-net/highlights.html

有这样的文字:

Cygwin中与Socket相关的调用基本上是在微软实施Berkeley套接字的Winsock中使用相同名称调用函数,但需要进行大量调整。所有套接字都是无阻塞的,可以通过POSIX信号中断阻塞调用。额外的簿记是实现正确的套接字共享POSIX语义所必需的,尤其是对于select调用。

这意味着方法“sendto(...)”在cygwin异步下并与PCATTCP同步。

如果你想要网络的最佳性能,你必须实现套接字异步; Boost :: Asio(http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio.html)包含这样的异步方法(例如“async_send_to”)。

不幸的是我无法弄清楚为什么用PCATTCP工具更改缓冲区套接字大小没有效果。

此致

托马斯