Using WinPcap I crafted a series of custom UDP packets and injected them into the Ethernet layer.
I sent 1000 packets, 1440 bytes each. It takes 2.1 sec for 100 Mbps bandwidth.
How do I make use of full bandwidth?
Using WinPcap I crafted a series of custom UDP packets and injected them into the Ethernet layer.
I sent 1000 packets, 1440 bytes each. It takes 2.1 sec for 100 Mbps bandwidth.
How do I make use of full bandwidth?
Your throughput seems to be exactly the max you'd get for a 10 mbit connection. Sure there's no 10mbit involved anywhere ?
Originally I misread the question, and thought that it was a duplicate of this. But the 100Mbps makes it completely different.
Even very modest hardware should be able to saturate a 100Mbps connection with no problems - particularly if you're using 1440 byte udp packets.
As suggested by krosenvold, the figures do look suspiciously like a 10Mbps connection, rather than 100Mbps. I would check all of the links from end to end to make sure that they are at the 100Mbps that you believe them to be. Any 10Mbps link in that chain is going to be a problem.
Depending on the equipment that you're using you may find that there have been issues with link autonegotiation. Some equipment is notoriously bad, so you may find better results by turning autonegotiation off, and forcing the link speeds to 100Mbps.
And as you have a pcap file that you're using, I would suggest trying tcpreplay to do some speed testing. There are several options that tcpreplay provides to replay files at the highest possible speed. (in particular, look at this wiki entry)
If that gives you different results than you're seeing at the moment it could point to a problem with the pcap file. For example, the pcap files do contain timing information that can be used when replaying the file. If the timing in your pcap file was taken from a 10Mbps network (for example) then replaying it in real time will give you the result that you're seeing.
Make sure all devices and mediums on the data exchange route are operating at 100 mbps, a connection is only as fast as it's weakest link. Also make sure all devices (including your network card) are operating in Full-Duplex mode.
What about CPU usage during the transfer?
We need to find the bottleneck. It can be the NIC/network or the CPU. Make sure that you are not "opening" the NIC for each packet.
Wrong:
loop{
OpenDevice
SendPacket
}
Good:
OpenDevice
loop{
SendPacket
}