带宽 ttcp 和 PCTTCP
Bandwidth ttcp and PCTTCP
我有一个关于 Winsock 编程的非常有趣的问题。老实说:我对此并不感到好笑。
我的目标是测试 GBit 网络的带宽。我将带有 GBit 网卡(Windows 7 64 位)的 PC 连接到嵌入式系统(其中还包括一个 GBit 网络芯片)。
嵌入系统作为UDP服务器工作(不要问我细节,它是FPGA编程的东西)。
从网站 http://www.pcausa.com/Utilities/ttcpdown1.htm 我下载了 PCATTCP 工具。
工具 PCATTCP I 运行 它具有以下选项:
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工具修改socket buffer size不生效?
有人对这个案例有什么建议吗?
你好,
托马斯
所以,
我找到了一些信息,cygwin 如何与套接字一起工作:
https://cygwin.com/cygwin-ug-net/highlights.html
有这段文字:
Cygwin 中与套接字相关的调用基本上调用了 Winsock 中的同名函数,Winsock 是 Microsoft 对 Berkeley 套接字的实现,但有很多调整。所有套接字在后台都是非阻塞的,以允许通过 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 工具更改缓冲区套接字大小没有效果。
此致,
托马斯
我有一个关于 Winsock 编程的非常有趣的问题。老实说:我对此并不感到好笑。
我的目标是测试 GBit 网络的带宽。我将带有 GBit 网卡(Windows 7 64 位)的 PC 连接到嵌入式系统(其中还包括一个 GBit 网络芯片)。
嵌入系统作为UDP服务器工作(不要问我细节,它是FPGA编程的东西)。 从网站 http://www.pcausa.com/Utilities/ttcpdown1.htm 我下载了 PCATTCP 工具。
工具 PCATTCP I 运行 它具有以下选项:
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工具修改socket buffer size不生效?
有人对这个案例有什么建议吗?
你好,
托马斯
所以,
我找到了一些信息,cygwin 如何与套接字一起工作:
https://cygwin.com/cygwin-ug-net/highlights.html
有这段文字:
Cygwin 中与套接字相关的调用基本上调用了 Winsock 中的同名函数,Winsock 是 Microsoft 对 Berkeley 套接字的实现,但有很多调整。所有套接字在后台都是非阻塞的,以允许通过 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 工具更改缓冲区套接字大小没有效果。
此致,
托马斯