使用 WinPcap,我制作了一系列自定义 UDP 数据包并将它们注入以太网层。
我发送了 1000 个数据包,每个数据包 1440 字节。100 Mbps 带宽需要 2.1 秒。
如何利用全带宽?
使用 WinPcap,我制作了一系列自定义 UDP 数据包并将它们注入以太网层。
我发送了 1000 个数据包,每个数据包 1440 字节。100 Mbps 带宽需要 2.1 秒。
如何利用全带宽?
Your throughput seems to be exactly the max you'd get for a 10 mbit connection. Sure there's no 10mbit involved anywhere ?
最初我误读了这个问题,并认为它是这个的副本。但是 100Mbps 使它完全不同。
即使是非常普通的硬件也应该能够毫无问题地使 100Mbps 连接饱和 - 特别是如果您使用 1440 字节的 udp 数据包。
正如 krosenvold 所建议的那样,这些数字看起来确实像 10Mbps 连接,而不是 100Mbps。我会从头到尾检查所有链接,以确保它们达到您认为的 100Mbps。该链中的任何 10Mbps 链路都将成为问题。
根据您使用的设备,您可能会发现链路自动协商存在问题。有些设备是出了名的糟糕,因此您可以通过关闭自动协商并将链接速度强制为 100Mbps 来获得更好的结果。
由于您有一个正在使用的 pcap 文件,我建议您尝试tcpreplay进行一些速度测试。tcpreplay 提供了几个选项来以尽可能高的速度重播文件。(特别是,看看这个wiki 条目)
如果这给您的结果与您目前看到的不同,则可能表明 pcap 文件存在问题。例如,pcap 文件确实包含可在重放文件时使用的计时信息。如果您的 pcap 文件中的时间是从 10Mbps 网络中获取的(例如),那么实时重放它会给您提供您所看到的结果。
确保数据交换路径上的所有设备和媒体都以 100 mbps 的速度运行,连接的速度仅与最薄弱的链路一样快。还要确保所有设备(包括您的网卡)都在全双工模式下运行。
传输期间的 CPU 使用率如何?
我们需要找到瓶颈。它可以是 NIC/网络或 CPU。确保您没有为每个数据包“打开”NIC。
错误的:
loop{
OpenDevice
SendPacket
}
好的:
OpenDevice
loop{
SendPacket
}