我正在尝试在 FPGA 和 Windows 7 PC 之间建立 10Gbps 以太网通道。为了进行粗略估计,我使用 Windows 任务管理器的网络选项卡测量了链路的带宽使用情况。后来我使用 Wireshark 测量了吞吐量。我通过将总字节数除以所用时间来进行小计算(N bytes/T)*8 bits per second
。
在较低的线速下(<= 5Gbps)
,两个测量值非常接近。然而,当我增加数据速率(例如超过 5 Gbps)时,任务管理器中的图表也会相应上升,但 Wireshark 获得的数据速率会降低到 2.5 到 3 Gbps 左右。
我只能猜测这是一个操作系统级别的问题。我知道线路速率和数据速率是完全不同的两件事。如果我错了,请纠正我。
我的问题是:
- 任务管理器在哪里测量线速率?
- Wireshark 在哪里捕获数据包?
我读这个帖子并且了解 Wireshark 捕获 NIC 驱动程序和更高层(我猜测是传输层)之间的数据包,但我不确定。
更新
我尝试使用资源监视器进行检查。它显示了传输到特定应用程序的字节数(如果我没记错的话)。当我以 10Gbps 的速率从 FPGA 传输数据时,资源监视器显示 1.26千兆字节每秒(每秒 10.001 千兆位!)传输速率。这现在让我更加困惑了。!
为什么 Wireshark 丢失了这些数据包?
更多信息和 NIC 参数:
我使用的是 UDP 协议。这可能是速度 >5Gbps 时数据包丢失的一个可能原因。来自 FPGA 的数据包长度为 16060 字节(16000 字节的有效负载和 60 字节的报头)。
- 接收缓冲区为 60000(最大 65535)。
- 启用巨型帧 - 16128(最大值)
- 已启用 RSS
- 启用 UDP 和 TCP 校验和卸载
- RSS 处理器数量为 6 个(PC 中有 6 个物理核心可用)
- 中断合并 25us(不确定)
我是网络领域的新手。任何帮助都将不胜感激。